Showing posts with label smart farms. Show all posts
Showing posts with label smart farms. Show all posts
Friday, 20 December 2019
A few 10-Year Challenges for Distributed Systems and IoT
A newspaper column on "next decade" predictions got me thinking about crystal ball prognoses. Tempting as it is to toss in my views on climate change, surveillance in China and self-driving cars, I'll focus this particular blog on computer systems topics in my area.
1. AI Sys and RT ML. These terms relate to computer systems created to support AI/ML applications, and that often involve addressing real-time constraints. There is a second meaning that centers on using AI tools in networks and operating systems and database platforms. I'm open-minded but, so far, haven't seen convincing demonstrations that this will yield big advances. I'll focus on the first meaning here.
Although AI Sys terminology is trendy, the fact is that we are still at the very earliest stages of incorporating sensing devices into applications that leverage cloud-scale data and machine learning. As this style of system deployment accelerates in coming years, we'll start to see genuinely smart power grids (existing grids often proclaim themselves to be "smart" but honestly, not much use is being made of ML as of yet), smart homes and offices, smart cities and highways, smart farms.... The long-term potential is enormous, but to really embrace it we need to rethink the cloud, and especially, the cloud edge where much of the reactive logic needs to run. This is why the first of my predictions centers on the IoT edge: we'll see a new and trustworthy edge IoT architecture emerge and mature, in support of systems that combine sensors, cloud intelligence and big data.
Getting there will require more than just redesigning today's cloud edge components, but the good news is that an area begging for disruptive change can be an ideal setting for a researcher to tackle. To give just one example: in today's IoT hub services, we use a database model to track the code revision level and parameter settings for sensors, connected and accessible or not. The IoT hub manages secure connectivity to the sensors, pushes updates to them, and filters incoming event notifications, handing off to the function service for lightweight processing. I really like the hub concept, and I think it represents a huge advance relative to the free-for-all that currently is seen when sensors are connected to the cloud. Moreover, companies like Microsoft are offering strong quality of service guarantees (delay, bandwidth, and even VPN security) for connectivity to the edge. They implement the software, then contract with ISPs and teleco's to obtain the needed properties. From the customer's perspective what matters is that the sensors are managed in a trustworthy, robust and secure manner.
The puzzle relates to the reactive path, which is very far from satisfactory right now. When a sensor sends some form of event to the cloud, the IoT hub operates like a windowing environment handling mouse movements or clicks: it functions as the main loop for a set of handlers that can be customized and even standardized (thus, a Canon camera could eventually have standard cloud connectivity with standard events such as "focused", or "low power mode", or "image acquired."). Like with a GUI, the incoming events that need user-defined processing are passed to these user-defined functions, which can customize what will happen next.
The core problem is with the implementation. First, we split the path: sensor-to-cloud uploads of large objects like photos are videos follow one path, and end up with the data automatically stoed into a binary large objects (BLOB) store, replicated for fault-tolerance.
Meanwhile, other kinds of events, like the ones just mentioned, are handled by small fragments of logic: cloud functions. But these aren't just lambdas written in C++ or Scala -- they are typically full programs coded in Linux and then handed to the cloud as containers, perhaps with configuration files and even their own virtualized network mapping. As a result, the IoT Hub can't just perform the requested action -- it needs to launch the container and pass the event into it.
The IoT hub accomplishes these goals using the "function service", which manages a pool of machines, picks one on which to launch this container for this particular Canon photo acquisition event, and then the program will load that event's meta-data and can decide what to do. In effect, we launch a Linux command.
Normally, launching a Linux command has an overhead of a few milliseconds. Doing so through the IoT hub is much slower: Today, this process takes as much as two seconds. The issues are several: first, because the IoT Hub is built on a database like SQL server or Oracle, we have overheads associated with the way databases talk to services like the function service. Next the function service itself turns out to do a mediocre job of warm-starting functions -- here the delay would center on caching, binding the function to any microservices it will need to talk to ahead of time (off the critical path), dealing with any synchronization the function may require.
I can't conceive of a sensible realtime use case where we can tolerate two seconds of delay -- even web page interactions are down in the 10-50ms range today, well below the 100ms level at which alpha-beta tests show that click-through drops. So I would anticipate a complete redesign of the IoT hub and function layer to warm-start commonly needed functions, allow them to pre-bind to any helper microservices they will interact with (binding is a potentially slow step but can occur out of the critical path), and otherwise maintain a shorter critical path from sensor to user-mediated action. I think we could reasonably target sub-1ms delays... and need to do so!
There are many other unnecessarily long delays in today's IoT infrastructures, impacting everything from photo and video upload to ML computation on incoming objects. But none of this is inevitable, and from a commercial perspective, the value of reengineering it (in a mostly or fully compatible way) would be huge.
2. Cost-efficient sharable hardware accelerators for IoT Edge. In prior blog postings, I've written about the puzzle of hardware for the IoT Edge (many people take that to mean "outside" the cloud, but I also mean "in the outermost tier of a data center supporting the cloud, like Azure IoT). Here, the central question involves costs: modern ML and especially model training is cost-effective only because we can leverage hardware accelerators like GPU, TPU and custom FPGA to offload the computationally parallel steps into ultra-efficient hardware. To this, add RDMA and NVM.
The current generation of hardware components evolved in backed back-end systems, and it is no surprise to realize that they are heavily optimized for batched, offline computing. And this leads to the key puzzle: today's ML accelerators are expensive devices that are cost effective only when they can be kept busy. The big batches of work seen in the back-end enable today's accelerators to run in support of very long tasks, which keeps them busy and makes them cost-effective. If the same devices were mostly idle, this style of accelerated ML would become extremely expensive.
In some sense, today's ML accelerators could have been at home in the old-styled batch computing systems of the 1970's. As we migrate toward a more event-driven IoT edge, we also will need to migrate machine learning (model training) and inference into real-time contexts, and this means that we'll be using hardware accelerators in settings that lack the batched pipelining that dominates in the big-data HPC-style settings were those currently reside. To be cost-effective we will either need completely new hardware (sharable between events or between users), or novel ways to repurpose our existing hardware for use in edge settings.
It isn't obvious how to get to that point, making it a fascinating research puzzle. As noted, edge systems are event-dominated, although we do see streams of image and video data (image-processing tasks on photo or video streams can be handled fairly well with existing GPU hardware, so that particular case can be solved cost-effectively now). The much harder case involves singleton events: "classify this speech utterance," or "decide whether or not to retain a copy of that photo." So the problem is to do snap analysis of an event. And while my examples involve photos and videos, any event could require an intelligent response. We may only have milliseconds to react, and part of that reaction may entail retraining or incrementally adjusting the ML models -- dynamic learning.
The hardware available today isn't easily sharable across scaled out event-driven systems where the events may originate in very different privacy domains, or from different users. We lack ways to protect data inside accelerators (Intel's new SIMD instruction set offers standard protections, but a GPU or TPU or FPGA is typically operated as a single security context: it is wide-open if a task runs on behalf of me immediately after one that ran on behalf of you: the kernel I've invoked could just reach over and extract any data left behind after your task was finished).
So why not use Intel's SIMD solutions? For classification tasks, this may be the best option, but for training, which is substantially more expensive from a computational point of view, the Intel SIMD options are currently far slower than GPU or TPU (FPGA is the cheapest of all the options, but would typically be somewhere in between the SIMD instructions and a GPU on the performance scale).
It will be interesting to watch this one play out, because we can see the end goal easily, and the market pressure is already there. How will the hardware vendors respond? And how will those responses force us to reshape the IoT edge software environment?
3. Solutions for the problem blockchain was supposed to solve. I'm pretty negative about cryptocurrencies but for me, blockchain is a puzzle. Inside the data center we've had append-only logs for ages, and the idea of securing them against tampering using entangled cryptographic signatures wasn't particularly novel back when the blockchain for Bitcoin was first proposed. So why is a tamper-proof append-only log like Microsoft's Corfu system not a blockchain?
There are several aspects in which blockchain departs from that familiar, well-supported option. I'll touch on them in an unusual order: from practical uses first to more esoteric (almost, "religious") considerations, which I'll tackle last. Then I want to argue that the use cases do point to a game changing opportunity, but that the whole story is confused by the religious zealotry around some of these secondary and actually, much less important aspects.
First among the novel new stories is the concept of a smart contract, which treats the blockchain as a database and permits the developer to place executable objects into Blockchain records, with the potential of representing complex transactions like the mortgage-backed securities that triggered the 2008 meltdown. The story goes that if we can capture the full description of the security (or whatever the contract describes), including the underlying data that should be used to value it, we end up with a tamper roof and self-validating way to price such things, and our transactions will be far more transparent.
I see the value in the concept of a smart contract, but worry that the technology has gotten ahead of the semantics: as of the end of 2019 you can find a dozen tools for implementing smart contracts (Ethereum is the leader, but Hyperledger is popular too). Less clear is the question of precisely how these are supposed to operate. Today's options are a bit like the early C or Java programming languages: both omitted specifications for all sorts of things that actually turned out to matter, leaving it to the compiler-writer to make a choice. We ended up with ambiguities that gave us today's security problems with C programs.
With blockchain and smart contracts you have even nastier risks because some blockchain implementations are prone to rollback (abort), and yet smart contracts create dependency graphs in which record A can depend on a future record B. A smart contract won't seem so smart if this kind of ambiguity is allowed to persist... I predict that 2020 will start a decade when smart contracts with strong semantics will emerge. But I'll go out on a limb and also predict that by the time we have such an option, there will be utter chaos in the whole domain because of these early but inadequate stories. Smart contracts, the real kind that will be robust with strong semantics? I bet we won't have them for another fifteen years -- and when we do get them, it will be because a company like Oracle or Microsoft steps in with a grown-up product that was thought through from bottom to top. We saw that dynamic with Java and CORBA giving way to C# and LINQ and .NET, which in turn fed back into languages like C++. And we will see it again, but it will take just as long!
But if you talk to people enamored with blockchain, it turns out that in fact, smart contracts are often seen as a cool curiosity. I might have a narrow understanding of the field, but among people I'm in touch with, there is little interest in cryptocurrency and even less interest in smart contracts. More common, as far as I can tell, is a focus on the auditability of a tamperproof ledger.
I'll offer one example that I run into frequently here at Cornell, in the context of smart farming. You see variants of it in medical centers (especially ones with partner institutions that run their own electronic health systems), human resource management, supply chains, airports that need to track airplane maintenance, and the list goes on. At any rate, consider farm to table cold-chain shipment for produce or agricultural products like cheese or processed meats. A cup of yoghurt will start with the cow being milked, and even at that stage we might wish to track which cow we milked, how much milk she produced, the fat content, document that she was properly washed before the milking machine kicked in, that we tested for milk safety and checked her health, that the milk was promptly chilled and then stored at the proper temperature. Later the milk is aggregated into a big batch, transported, tested again, pasteurized, homogenized, graded by fat content, cultured (and that whole list kicks in again: in properly sterile conditions, at the right temperature...).|
So here's the challenge: Could we use a blockchain to capture records of these kinds in a secure and tamperproof manner, and then be in a position to audit that blockchain for various tasks such as to confirm that the required safety steps were preserved, or to look for optimization opportunities? Could we run today's ML tools on it, treating the records as an ordered collection and mapping that collection into an event Tensor Flow or Spark/Databricks could ingest and analyze? I see this a fantastic challenge problem for the coming decade.
The task is fascinating and hard, for a lot of reasons. One is that the domain is partly disconnected (my colleagues have created a system, Vegvisir, focused on this aspect). A second question you can ask concerns integrity of our data capture infrastructure: can I trust that this temperature record is from the proper thermometer, correctly calibrated, etc? Do I have fault-tolerant redundancy? How can we abstract from the chain of records to a trustworthy database, and what do trust-preserving queries look like? How does one do machine learning on a trusted blockchain, and what trust properties would the model then carry? Can a model be self-certifying, too? What would the trust certificate look like (at a minimum, it would need to say that "if you trust X and Y and Z, you can trust me for purpose A under assumption B..."). I'm reminded of the question of self-certifying code... perhaps those ideas could be applied in this domain.
I commented that this is the problem blockchain really should be addressing. I say this because as far as I can tell, the whole area is bogged down on really debates that have more to do with religion than with rigorous technical arguments. To me this is at least in part because of the flawed belief that anonymity and permissionless mining are key properties that every blockchain should offer. The former is of obvious value if you plan to do money laundering, but I'm pretty sure we wouldn't even want this property in an auditing setting. As for the permissionless mining model, the intent was to spread the blockchain mining revenue fairly, but this has never really been true in any of the main blockchain systems: they are all quite unfair, and all the revenue goes to shadowy organizations that operate huge block-mining systems. As such, the insistence on permissionless mining with anonymity really incarnates a kind of political opinion, much like the "copyleft" clause built into GNU licenses, which incarnated a view that software shouldn't be monetized. Permissionless blockchain incarnates the view that blockchains are for cybercurrency, that cybercurrency transactions shouldn't be taxed or regulated, and that management of this infrastructure is a communal opportunity, but also a communal revenue source.
Turning to permissionless blockchain as it exists today, we have aspects of this dreamed-of technology, but the solutions aren't fair, and in fact demand a profoundly harmful mining model that squanders energy in the form of hugely expensive proof-of-work certifications. My colleague, Robbert van Renesse, has become active in the area and has been doing a survey recently to also look at some of the other ideas people have floated: proof of stake (a model in which the rich get richer, but the compute load is much reduced, so they spend less to earn their profits...), proof of elapsed time (a lovely acronym, PoET, but in fact a problematic model because the model can be subverted using today's Intel SGX hardware), and all sorts of one-way functions that are slow to compute and easy to verify (the parallelizable ones can be used for proof-of-work but the sequential ones simply reward whoever has the fastest computer, which causes them to fail on a different aspect of the permissionless blockchain mantra: they are "undemocratic", meaning that they fail to distribute the income for mining blocks in a fair manner). The bottom line, according to Robbert, is that for now, permissionless blockchain demands computational cycles and those cycles make this pretty much the least-green technology on earth. There is some irony here, because those who promote this model generally seem to have rather green politics in other ways. I suppose this says something about the corrupting influence of potentially vast wealth.
Meanwhile, more or less betting on the buzz, we have a whole ecosystem of companies convinced that what people really want are blockchain curation products for existing blockchain models. These might include tools that build the blockchain for you using the more-or-less standard protocols, that back it up, clean up any garbage, index it for quick access, integrate it with databases and AI/ML. We also have companies promoting some exceptionally complex protocols, many of which seem to have the force of standards simply because people are becoming familiar with their names. It will take many years to even understand whether or not some of these are correct -- I have serious doubts about a few of the most famous ones!
But here's my bet for the coming decade: in 2029, we'll be seeing this market morph into a new generation of WAN database consumers, purchasing products from today's database companies. Those customers won't really be particularly focused on whether they use blockchain or some other technology (and certainly won't insist on permissive models with pervasive anonymity and proof of work). They will be more interested in tamperproof audits and ML on the temporally-ordered event set.
Proof of work per-se will have long since died from resource exhaustion: the world simply doesn't have enough electrical power and cooling to support that dreadful model much longer (don't blame the inventors: the blame here falls squarely on the zealots in the cybercoin community, who took a perfectly good idea and twisted it into something harmful as part of their quest to become billionaires off the back of a pie-in-the-sky economic model).
The future WAN databases that emerge from the rubble will have sophisticated protection against tampering and the concept of trust in a record will have been elevated to a notion of a trustworthy query result, that can be checked efficiently by the skeptical end-user. And this, I predict, will be a huge market opportunity for the first players to pull it off. It would surprise me if those players don't turn out to include today's big database companies.
4. Leave-nothing-sensitive behind privacy. The role of the cloud in smart settings -- the ones listed above, or others you may be thinking about -- is deeply enshrined by now: very few smart application systems can avoid a cloud-centric computing model in which the big data and the machine intelligence is at least partly cloud-hosted. However, for IoT uses, we also encounter privacy and security considerations that the cloud isn't terribly good at right now, with some better examples (Azure, on the whole, is excellent) and some particularly poor ones (I won't point a finger but I will comment that companies incented to place a lot of advertising often find it hard to avoid viewing every single user interaction as an invaluable asset that must be captured in perpetuity and then mined endlessly for every possible nugget of insight).
The upshot of this is that the cloud is split today between smart systems that are trying their best to spy on us, and smart systems that are just doing smart stuff to benefit us. But I suspect that the spying will eventually need to end, at least if we hope to preserve our Western democracies. How then can we build privacy-preserving IoT clouds?
I've written about this in the past, but in a nutshell, I favor a partnership: a style of IoT application that tries to "leave no trace behind" coupled to a cloud vendor infrastructure that promises not to deliberately spy on the end-user. Thus for example when a voice command is given to my smart apartment, it may well need to be resolved up on the cloud, but shouldn't somehow be used to update databases about me, my private life, my friends...
I like the mental imagery of camping in a wilderness where there are some bears roaming around. The cloud needs a model under which it can transiently step in to assist in making sense of my accent and choice of expressions, perhaps even contextualized by knowledge of me and my apartment, and yet when the task finishes, there shouldn't be anything left behind that can leak to third party apps that will rush into my empty campsite, hungry to gobble up any private data for advertising purposes (or worse, in countries like China, where the use of the Internet to spy on the population is a serious threat to personal liberties). We need to learn to enjoy the benefits of a smart IoT edge without risk.
Can this be done? I think so, if the cloud partner itself is cooperative. Conversely, the problem is almost certainly not solvable if the cloud partner will see its revenue model break without all that intrusive information, and hence is hugely incented to cheat. We should tackle the technical aspects now, and once we've enabled such a model, I might even favor asking legislative bodies to mandate privacy-preservation as a legally binding obligation on cloud vendor models. I think this could be done in Europe, but the key is to first create the technology so that we don't end up with an unfunded and infeasible mandate. Let's strike a blow against all those companies that want to spy on us! Here's a chance to do that by publishing papers in top-rated venues... a win-win for researchers!
5. Applications that prioritize real-time. Many IoT systems confront deadlines, and really have no choice except to take actions at the scheduled time. Yet if we want to also offer guarantees, this poses a puzzle: how do we implemented solutions that are always sure to provide the desired timing properties, yet are also "as consistent" as possible, or perhaps "as accurate as possible", given those constraints?
To me this is quite an appealing question because it is easy to rattle off a number of ways one might tackle such questions. For example, consider an ML algorithm that iterates until it converges, which typically involves minimizing some sort of error estimate. Could we replace the fixed estimate by adopting a model that permits somewhat more error if the deadline is approaching?
Or here's an idea: What about simply skipping some actions because it is clear we can't meet the deadline for them? I'm reminded of work Bart Selman, a colleague of mine, did fifteen years ago. Bart was looking at situations in which an AI system confronted an NP complete question, but in a streaming context where variations on that question would be encountered every few seconds (he was thinking about robot motion planning but similar issues arise in many AI tasks). What he noticed was that heuristics for solving these constrained optimization problems sometimes converge rapidly but in other situations diverge and compute endlessly. So his idea, very clever, was to take the quick answers but to just pull the plug on computations that take too long. In effect, Bart argued that if the robot is faced with a motion-planning task it won't be able to solve before its next step occurs, take the previously-planned step and then try again. Sooner or later the computation will converge quickly, and the overall path will be both of high quality, and fast.
We could do similar things in many IoT edge settings, like the smart-things cases enumerated earlier. You might do better to have a smart grid that finds an optimized configuration setting once every few seconds, but then coasts along using old settings, than to pause to solve a very hard configuration problem 20 times per second if in doing so, you'll miss the deadline for actually using the solution. The same is true for management of traffic flow on a highway or in a dense city.
For safety purposes, we will sometimes still want to maintain some form of risk envelope. If I'm controlling a smart car in a decision-loop that runs 20 times per second, I might not run a big risk if I toss up my hands even 4 or 5 times in a role. But we would not want to abandon active control entirely for 30 seconds, so there has to be a safety mechanism too, one that kicks in long before the car could cause an accident (or miss the next turn), forcing it into a safe mode. I don't see any reason we couldn't do this: a self-driving car (or a self-managed smart highway) would need some form of safety monitor in any case, to deal with all sorts of possible mishaps, so having it play the role of making sure the vehicle has fresh guidance data seems like a fairly basic capability. Then in the event of a problem, we would somehow put that car into a safe shutdown mode (it might use secondary logic to pull itself into a safety lane and halt, for example).
I could probably go on indefinitely, but every crystal ball eventually fogs over, so perhaps we'll call it quits here. Have a great holiday and see you in the next decade!
Tuesday, 5 November 2019
The hardest part of a cloud for IoT will be the hardware
At the recent SOSP 2019 conference up in Ottawa, I was one of the "old guard" that had expected a program heavy on core O/S papers aimed at improving performance, code quality or reliability for the O/S itself or for general applications. How naïve of me: Easily half the papers were focused on performance of machine learning infrastructures or applications. And even in the other half, relatively few fell into the category that I think of as classic O/S research.
Times change, though, and I'm going to make the case here that in fact the pendulum is about to swing back and in quite a dramatic way. If we ask what AI and ML really meant in the decade or so leading up to this 2019 conference the answer leads directly to the back-end platforms that host big-data analytic tools.
Thus it was common to see a SOSP paper that started by pointing out that training a deep neural network can take many hours, during which the GPU sometimes is stalled, starved for work to do. Then the authors would develop some sort of technique for restructuring the DNN training system, the GPU would stay fully occupied, and performance would improve 10x. What perhaps is a bit less evident is the extent to which these questions and indeed the entire setup center on the big-data back-end aspects of the problem. The problem (as seen today) itself is inherently situated in that world: when you train a DNN, you generally work with vast amounts of data, and the whole game is to parallelize the task by batching the job, spreading the work over large number of nodes that each tackle some portion of the computation, and then iterating, merging the sub-results as the DNN training system runs. The whole setup is about as far from real-time as it gets.
So we end up with platforms like MapReduce and Hadoop (Spark), or MPI for the HPC fans in the rooms. These make a lot of sense in a batched, big-data, back-end setting.
But I'm a huge believer in the cloud edge: IoT systems with real-time sensors, that both make decisions and even learn as they run, often under intense time pressure. Take Microsoft's Farmbeats product, led by a past student of mine who was a star from the outset. Today, Ranveer Chandra has become the Chief Scientist for Azure Global and is the owner of this product line. Farmbeats has a whole infrastructure for capturing data (often video or photos) from cameras. It can support drones that will scan a farm for signs of insect infestations or other problems. It replans on the fly, and makes decisions on the fly: spray this. Bessie seems to be favoring her right hoof, and our diagnostic suggests a possible tear in the nail: call the vet. The tomatoes in the north corner of the field look very ripe and should be picked today. Farmbeats even learns wind patterns on the fly, and reschedules the dones doing the search pattern to glide on the breeze as a way to save battery power.
And this is the future. Last time I passed through Newark Airport, every monitor was switching from ads for Microsoft's Farmbeats to ads for Amazon's smart farm products, back and forth. The game is afoot!
If you walk the path for today's existing DNN training systems and classifiers, you'll quickly discover that pretty much everything gets mapped to hardware accelerators. Otherwise, it just wouldn't be feasible at these speeds, and this scale. The specific hardware varies: At Google, TPUs and TPU clusters, and their own in-house RDMA solutions. Amazon seems very found of GPU and very skeptical of RDMA; they seem convinced that fast datacenter TCP is the way to go. Microsoft has been working with a mix: GPUs and FPGAs, configurable into ad-hoc clusters that treat the infrastructure like an HPC supercomputing communications network, complete with the kinds of minimal latencies that MPI assumes. All the serious players are interested in hearing about RDMA-like solutions that don't require a separate InfiniBand network and that can be trusted not to hose the entire network. Now that you can buy SSDs built from 3-D XPoint, nobody wants anything slower.
And you know what? This all pays off. Those hardware accelerators are data-parallel and no general purpose CPU can possibly compete with them. They would be screamingly fast even without attention to the exact circuitry used to do the computing, but in fact many accelerators can be configured to omit unneeded logic: an FPGA can be pared down until the CPUs implement only the exact operations actually needed, to the exact precision desired. If you want matrix multiple with 5-bit numbers, there's an FPGA solution for that. Not a gate or wire wasted... and hence no excess heat, no unneeded slowdowns, and more FPGA real-estate available to make the basic computational chunk sizes larger. That's the world we've entered, and all these acronyms dizzy you, well, all I can do is to say that you get used to them quickly!
To me this leads to the most exciting of the emerging puzzles: How will we pull this same trick off for the IoT edge? (I don't mean specifically the Azure IoT Edge, but more broadly: both remote clusters and also the edge of the main cloud datacenter). Today's back-end solutions are more optimized for batch processing and relaxed time constraints than people probably realize, and the same hardware that seems so cost-effective for big data may seem quite a bit less efficient if you try to move it out to near the edge computing devices.
In fact it gets even more complicated. The edge is a world with some standards. Consider Azure IoT: the devices are actually managed by the IoT Hub, which provides a great deal of security (particularly in conjunction with IoT Sphere, a hardware security model with its own TCB). IoT events trigger Azure functions: lightweight stateless computations that are implemented as standard programs but that run in a context where we don't have FPGA or GPU support: initializing those kinds of devices to support a particular kernel (a particular computational functionality) typically requires at least 3-5 seconds to load the function, then reboot the device. I'm not saying it can't be done: if you know that many IoT functions will need to run a DNN classifier, I suppose you could position accelerators in the function tier and preload the DNN classifier kernel. But the more general form of the story, where developers for a thousand IoT companies create those functions, leads to such a diversity of needs from the accelerator that it just could never be managed.
So... it seems unlikely that we'll be doing the fast stuff in the function tier. More likely, we'll need to run our accelerated IoT logic in microservices, living behind the function tier on heavier nodes with beefier memories, stable IoT accelerators loaded with exactly the kernels the particular microservice needs, and then all of this managed for fault-tolerance with critical data replicated (and updated as the system learns: we'll be creating new ML models on the fly, like Farmbeats and its models of cow health, its maps of field conditions, and its wind models). As a side-remark, this is the layer my Derecho project targets.
But consider the triggers: in the back-end, we ran on huge batches of events, perhaps tens of thousands at a time, in parallel. At the edge, a single event might trigger the whole computation. Even to support this, we will still need RDMA to get the data to the microservice instance(s) charged with processing it (via the IoT functions, which behave like small routers, customized by the developer), fast NVM like Optane, and then those FPGA, GPU or TPU devices to do the heavily parallel work. How will we keep these devices busy enough to make such an approach cost-effective?
And how will the application developer "program" the application manager to know how these systems need to be configured: this microservice needs one GPU per host device; that one needs small FPGA clusters with 32 devices but will only use them for a few milliseconds per event, this other one needs a diverse mix, with TPU here, GPU there, FPGA on the wire... Even "describing" the needed configuration looks really interesting, and hard.
You see, for researchers like me, questions like those aren't a reason to worry. They are more like a reason to celebrate: plenty to think about, lots of work to do and papers to write, and real challenges for our students to tackle. Systems challenges.
So you know what? I have a feeling that by 2020 or 2021, OSDI and SOSP will start to feel more like classic systems conferences again. The problems I've outlined look more like standard O/S topics, even if the use-case that drives them is dominated by AI and ML and real-time decision-making for smart farms (or smart highways, smart homes, smart cities, smart grids). The money will be there -- Bill Gates once remarked during a Cornell visit that the IoT revolution could easily dwarf the Internet and Web and Cloud ones (I had a chance to ask why, and his answer was basically that there will be an awful lot of IoT devices out there... so how could the revolution not be huge?)
But I do worry that our funding agencies may be slow to understand this trend. In the United States, graduate students and researchers are basically limited to working on problems for which they can get funding. Here we have a money-hungry and very hard question, that perhaps can only be explored in a hands-on way by people actually working at companies like Google and Microsoft and Amazon. Will this lead the NSF and DARPA and other agencies to adopt a hands-off approach?
I'm hoping that one way or another, the funding actually will be there. Because if groups like mine can get access to the needed resources, I bet we can show you some really cool new ideas for managing all that hardware near the IoT edge. And I bet you'll be glad we invented them, when you jump into your smart car and tell it to take the local smart highway into the office. Just plan ahead: you won't want to miss OSDI next year, or SOSP in 2021!
Times change, though, and I'm going to make the case here that in fact the pendulum is about to swing back and in quite a dramatic way. If we ask what AI and ML really meant in the decade or so leading up to this 2019 conference the answer leads directly to the back-end platforms that host big-data analytic tools.
Thus it was common to see a SOSP paper that started by pointing out that training a deep neural network can take many hours, during which the GPU sometimes is stalled, starved for work to do. Then the authors would develop some sort of technique for restructuring the DNN training system, the GPU would stay fully occupied, and performance would improve 10x. What perhaps is a bit less evident is the extent to which these questions and indeed the entire setup center on the big-data back-end aspects of the problem. The problem (as seen today) itself is inherently situated in that world: when you train a DNN, you generally work with vast amounts of data, and the whole game is to parallelize the task by batching the job, spreading the work over large number of nodes that each tackle some portion of the computation, and then iterating, merging the sub-results as the DNN training system runs. The whole setup is about as far from real-time as it gets.
So we end up with platforms like MapReduce and Hadoop (Spark), or MPI for the HPC fans in the rooms. These make a lot of sense in a batched, big-data, back-end setting.
But I'm a huge believer in the cloud edge: IoT systems with real-time sensors, that both make decisions and even learn as they run, often under intense time pressure. Take Microsoft's Farmbeats product, led by a past student of mine who was a star from the outset. Today, Ranveer Chandra has become the Chief Scientist for Azure Global and is the owner of this product line. Farmbeats has a whole infrastructure for capturing data (often video or photos) from cameras. It can support drones that will scan a farm for signs of insect infestations or other problems. It replans on the fly, and makes decisions on the fly: spray this. Bessie seems to be favoring her right hoof, and our diagnostic suggests a possible tear in the nail: call the vet. The tomatoes in the north corner of the field look very ripe and should be picked today. Farmbeats even learns wind patterns on the fly, and reschedules the dones doing the search pattern to glide on the breeze as a way to save battery power.
And this is the future. Last time I passed through Newark Airport, every monitor was switching from ads for Microsoft's Farmbeats to ads for Amazon's smart farm products, back and forth. The game is afoot!
If you walk the path for today's existing DNN training systems and classifiers, you'll quickly discover that pretty much everything gets mapped to hardware accelerators. Otherwise, it just wouldn't be feasible at these speeds, and this scale. The specific hardware varies: At Google, TPUs and TPU clusters, and their own in-house RDMA solutions. Amazon seems very found of GPU and very skeptical of RDMA; they seem convinced that fast datacenter TCP is the way to go. Microsoft has been working with a mix: GPUs and FPGAs, configurable into ad-hoc clusters that treat the infrastructure like an HPC supercomputing communications network, complete with the kinds of minimal latencies that MPI assumes. All the serious players are interested in hearing about RDMA-like solutions that don't require a separate InfiniBand network and that can be trusted not to hose the entire network. Now that you can buy SSDs built from 3-D XPoint, nobody wants anything slower.
And you know what? This all pays off. Those hardware accelerators are data-parallel and no general purpose CPU can possibly compete with them. They would be screamingly fast even without attention to the exact circuitry used to do the computing, but in fact many accelerators can be configured to omit unneeded logic: an FPGA can be pared down until the CPUs implement only the exact operations actually needed, to the exact precision desired. If you want matrix multiple with 5-bit numbers, there's an FPGA solution for that. Not a gate or wire wasted... and hence no excess heat, no unneeded slowdowns, and more FPGA real-estate available to make the basic computational chunk sizes larger. That's the world we've entered, and all these acronyms dizzy you, well, all I can do is to say that you get used to them quickly!
To me this leads to the most exciting of the emerging puzzles: How will we pull this same trick off for the IoT edge? (I don't mean specifically the Azure IoT Edge, but more broadly: both remote clusters and also the edge of the main cloud datacenter). Today's back-end solutions are more optimized for batch processing and relaxed time constraints than people probably realize, and the same hardware that seems so cost-effective for big data may seem quite a bit less efficient if you try to move it out to near the edge computing devices.
In fact it gets even more complicated. The edge is a world with some standards. Consider Azure IoT: the devices are actually managed by the IoT Hub, which provides a great deal of security (particularly in conjunction with IoT Sphere, a hardware security model with its own TCB). IoT events trigger Azure functions: lightweight stateless computations that are implemented as standard programs but that run in a context where we don't have FPGA or GPU support: initializing those kinds of devices to support a particular kernel (a particular computational functionality) typically requires at least 3-5 seconds to load the function, then reboot the device. I'm not saying it can't be done: if you know that many IoT functions will need to run a DNN classifier, I suppose you could position accelerators in the function tier and preload the DNN classifier kernel. But the more general form of the story, where developers for a thousand IoT companies create those functions, leads to such a diversity of needs from the accelerator that it just could never be managed.
So... it seems unlikely that we'll be doing the fast stuff in the function tier. More likely, we'll need to run our accelerated IoT logic in microservices, living behind the function tier on heavier nodes with beefier memories, stable IoT accelerators loaded with exactly the kernels the particular microservice needs, and then all of this managed for fault-tolerance with critical data replicated (and updated as the system learns: we'll be creating new ML models on the fly, like Farmbeats and its models of cow health, its maps of field conditions, and its wind models). As a side-remark, this is the layer my Derecho project targets.
But consider the triggers: in the back-end, we ran on huge batches of events, perhaps tens of thousands at a time, in parallel. At the edge, a single event might trigger the whole computation. Even to support this, we will still need RDMA to get the data to the microservice instance(s) charged with processing it (via the IoT functions, which behave like small routers, customized by the developer), fast NVM like Optane, and then those FPGA, GPU or TPU devices to do the heavily parallel work. How will we keep these devices busy enough to make such an approach cost-effective?
And how will the application developer "program" the application manager to know how these systems need to be configured: this microservice needs one GPU per host device; that one needs small FPGA clusters with 32 devices but will only use them for a few milliseconds per event, this other one needs a diverse mix, with TPU here, GPU there, FPGA on the wire... Even "describing" the needed configuration looks really interesting, and hard.
You see, for researchers like me, questions like those aren't a reason to worry. They are more like a reason to celebrate: plenty to think about, lots of work to do and papers to write, and real challenges for our students to tackle. Systems challenges.
So you know what? I have a feeling that by 2020 or 2021, OSDI and SOSP will start to feel more like classic systems conferences again. The problems I've outlined look more like standard O/S topics, even if the use-case that drives them is dominated by AI and ML and real-time decision-making for smart farms (or smart highways, smart homes, smart cities, smart grids). The money will be there -- Bill Gates once remarked during a Cornell visit that the IoT revolution could easily dwarf the Internet and Web and Cloud ones (I had a chance to ask why, and his answer was basically that there will be an awful lot of IoT devices out there... so how could the revolution not be huge?)
But I do worry that our funding agencies may be slow to understand this trend. In the United States, graduate students and researchers are basically limited to working on problems for which they can get funding. Here we have a money-hungry and very hard question, that perhaps can only be explored in a hands-on way by people actually working at companies like Google and Microsoft and Amazon. Will this lead the NSF and DARPA and other agencies to adopt a hands-off approach?
I'm hoping that one way or another, the funding actually will be there. Because if groups like mine can get access to the needed resources, I bet we can show you some really cool new ideas for managing all that hardware near the IoT edge. And I bet you'll be glad we invented them, when you jump into your smart car and tell it to take the local smart highway into the office. Just plan ahead: you won't want to miss OSDI next year, or SOSP in 2021!
Subscribe to:
Posts (Atom)