An intuitive view of data streaming as an underlying architecture for achieving human level artificial intelligence and beyond and a brief look of our novel compiler in the makings.
2. ▪ There is one known runtime for human-level intelligence
3. ▪ What is so special about the human brain structure?
!3
Neurobiological Foundations of Action Planning and Execution - Human Action Control — B.Hommel et al.
▪ Diverse functionality/workloads
▪ Common runtime (neurons)
4. ▪ The Brain Neural Network Runtime
!4
▪ Distributed
▪ Organised in Logical Units
▪ Embedded State with Computation
▪ Shared Network
▪ Configured Data Dependencies
▪ Messages (signals)
▪ Supports Low latency Serving
▪ Supports Incremental Updates
▪ Supports Iterative Tasks
▪ Asynchronous Processing
▪ 100% Organic
5. ▪ Distributed
▪ Organised in Logical Units
▪ Embedded State with Computation
▪ Shared Network
▪ Configured Data Dependencies
▪ Messages (signals)
▪ Supports Low latency Serving
▪ Supports Incremental Updates
▪ Supports Iterative Tasks
▪ Asynchronous Processing
▪ 100% Organic
▪ The Data Stream Processing Runtime
!5
6. !6
▪ Compilers - Our first and best “super-human” invention
▪ Instead, compilers can understand instructions…
▪ explained by humans in a high-level declarative language
▪ and then optimise them
▪ and translate to stupid machines to execute them reliably
“A revolutionary technology
that does NOT require you to throw tons of data
to your problem to be able to solve it”
10. !10
Intelligence: Smart Choice / Responce Time
Pipeline (CPU) - Optimised
Pipeline (GPU/TPU)
- Optimised
time until decision
Pipeline (CPU)
Pipeline (GPU/TPU)
critical decision
making
11. !11
▪ It will be able to solve complex Climate Science problems, fast
val rawStreams = streams("models/*/ts*.nc").
withType[LabelledTensor[Inf x Int x Int -> Double,
Float x (Float, Float) x (Float, Float)]].
dimensionLabels('time x 'lat x 'lon);
val averageStreams = rawStreams.map { raw =>
val timeSliced = raw.sliceBy('time);
val aligned = timeSlices.tile(360 x 720).
map(grid => average(grid));
val gridSlices = aligned.sliceBy('lat, 'lon);
val agg12h = gridSlices.window('time, t => t.between(TimeOfDay(6.h), TimeOfDay(18.h))).
average;
val agg1d = gridSlices.window('time, t => Day(t)).average;
val agg1month = gridSlices.window('time, t => Month(t)).average;
val agg1Season = gridSlices.window('time, t => Month(t).in(
Set(Dec, Jan, Feb),
Set(Mar, Apr, May),
Set(Jun, Jul, Aug),
Set(Sep, Oct, Nov)).average;
(agg12h, agg1d, agg1month, agg1season)
}.unzip4;
val diffs = averageStreams.map { inv =>
val merged = inv.mergeOn('time, 'lat, 'lon);
val averageModels = merged.map(models => (models, average(models)));
averageModels.map {
case (models, avg) => models.map(t => t-avg)
};
}
12. !12
equi-join time slices then map:
average then diff
sink:
12h
sink:
1d
sink:
month
sink:
season
src20 window:
12h
aggregate with
shared tree of
partials:
average
window:
1d
window:
month
window:
season
src1 tile
map:
average window:
12h
aggregate with
shared tree of
partials:
average
window:
1d
window:
month
window:
season
equi-join time slices then map:
average then diff
equi-join time slices then map:
average then diff
equi-join time slices then map:
average then diff
▪ And generate an optimised stream process graph (program)
14. !14
Weld IR (Stanford DAWN Project)
+ supports large number of existing libraries
- currently limited to short-lived local task execution
Matei Zaharia (Spark architect) et. al.
!14
15. The Arc Compilation Stack
Available Resources
Stream Metadata
Intermediate
Representation (IR)
Frontends
Logically Optimised
IR
Physically Optimised
IR
Binaries
Arc: Weld for Streams
16. !16
JIT - Live Rewiring of Continuous Programs
Physically Optimised
IR
Binaries
Change in Resources
Change in Load Distribution
Monitoring
Discovered better Plan
17. !17
The Current CDA Team (RISE SICS + KTH)
Computer
Systems
Machine
Learning
Lars
Kroll
Paris
Carbone
Christian
Schulte
Seif
Haridi
Theodore
Vasiloudis
Daniel
Gillblad
MSc Students
• Klas Segeljakt
• Oscar Bjuhr
• Johan Mickos
18. ▪ The Brain Neural Network Runtime
!18
▪ Distributed
▪ Organised in Logical Units
▪ Embedded State with Computation
▪ Shared Network
▪ Configured Data Dependencies
▪ Messages (signals)
▪ Supports Low latency Serving
▪ Supports Incremental Updates
▪ Supports Iterative Tasks
▪ Asynchronous Processing
▪ 100% Organic
▪ Just in Time Reconfiguration
▪ Executes Declarative Instructions Reliably