An example of a large-scale situation awareness
application would be monitoring, for instance, activities
in an airport. And in that situation what we are trying to make sure
is that normal activities are okay, but
anything anomalous, with respect to what we
see in the environment has to result in triggers being sent to the appropriate
software agents or even humans, in terms of actions they may need to take. And
camera networks are becoming ubiquitous. For instance,
in the city of London, there is on
the order of 400,000 cameras that are
deployed, blanketing the city. And the intent in
such camera networks is to analyze the
camera streams to, to detect for anomalous situations.
When you have such a large number of sensors the first thing that one has
to worry about is overloading the infrastructure
itself with the amount of data that is
being continuously produced 24/7 from all of
these sensors. That suggests that it is important
to prune these sensor streams at the source in order to make sure that the
infrastructure overload is avoided. And the
traditional way to do surveillance is to
have humans sitting in front of banks
of monitors looking for any anomalous activity,
for instance, in an airport. This obviously does not scale if you have on the
order of 100,000 or 200,000 cameras blanketing a city, which is becoming fairly
common in many large cities like New York, Chicago, London, and so on. And
so, cognitive overhead is another big thing that you have to worry about in
large-scale situation awareness applications. And it is extremely important to
avoid false positives and false negatives. With false positives we are
identifying events that are not really anomalous,
but the system thinks that it is an
anomalous event. That's a false positive and similarly,
false negative is saying, well, there is an
event that should have been caught but, but did
not get caught and that's a false negative.
So both of these are very, very important
metrics that one has to measure in large
scale situation awareness applications. From a programming model perspective,
one of the important take aways
in just the discussion about large-scale awareness
application is that the programming infrastructure has
to facilitate the domain expert who is
developing a large-scale situation awareness application to
be able to deal with time sensitive
data. So what are the pain points
in developing large scale situation awareness applications?
The first thing is providing the right level of abstractions, promoting ease of
use. Simplicity is the key. Interfaces
that allow seamless migration of computation between
the edge of the network and the computational resources in a data center,
for instance. Temporal ordering of events that
are taking place in the distributed system,
and propagating temporal causality. By that, what I
mean is if an event, let's say, was captured
by a camera at a particular point of time, it make be processed at a later point
of time in real time but there's got to be a temporal causality for the time at
which it was captured and the digest of information
that was created. And such temporal causality is extremely
important in the development of large-scale situation
awareness applications. Another requirement in such large-scale situation
awareness application is that there are live data
that we are dealing with, but at the
same time we may also have to correlate
that with historical data in order to make
a high-level inference as to what's going on.
For instance, if we see a speeding car
at this point of time on the highway we may want to ask the question, was this
car involved in an incident in the last n days? And that is kind of
historical data that has to be correlated with
live data. So a programming infrastructure that provides
facility for these kinds of things would make
the life of the domain expert, writing such large-scale
situation awareness applications, so much simpler.