Works for an amazingly large set of products!
942 karma · joined December 9, 2009
formerly researcher at Google DeepMind
blog: https://www.julian.ac
Works for an amazingly large set of products!
The standard way to do this is Reinforcement Learning: we do not teach the model how to do the task, we let it discover the _how_ for itself and only grade it based on how well it did, then reinforce the attempts where it did well. This way the model can learn wildly superhuman performance, e.g. it's what we used to train AlphaGo and AlphaZero.
Personally I think we'll see way more growth than that, but to see profound impacts on our economy you only need to believe the much more conservative assumption of a little extra growth along the same trend.
The argument is not that it will keep growing exponentially forever (obviously that is physically impossible), rather that:
- given a sustained history of growth along a very predictable trajectory, the highest likelihood short term scenario is continued growth along the same trajectory. Sample a random point on an s-curve and look slightly to the right, what’s the most common direction the curve continues?
- exponential progress is very hard to visualize and see, it may appear to hardly make any progress while far away from human capabilities, then move from just below to far above human very quickly
It’s likely that it will slow down at some point, but the highest likelihood scenario for the near future is that scaling will continue.
Sorry, this is absolutely still the case if you want to scale throughput beyond the few thousand IOPS a single shard can serve. S3 will automatically reshard your key space, but if your keys are sequential (eg leading timestamp) all your writes will still hit the same shard.
Source: direct conversations with AWS teams.
Or well you can, using unsafe, Arc and Mutex - but at that point the safety guarantees aren’t much better than what I get in well designed C++.
Don’t get me wrong, I still much prefer Rust, but I wish async and references worked together better.
Source: I recently wrote a high-throughput RPC library in Rust (saturating > 100 Gbit NICs)
TPUs were used for neural network inference and training, but game logic as well as MCTS was on the CPU using C++.
JAX is awesome though, I use it for all my neural network stuff!
We've known how to produce fusion reactions for a long time, the difficult part is to generate net energy.
Self diagnosis waves on tiktok seem like the next evolution of this, but even faster and more globalised.
I've been wondering if this phenomenon could be harnessed to reduce the impact of mental illness: purposely spread content that encourages self-diagnosis with the mildest possible symptoms.
Have you considered to also expose this information in an interactive web interface? Using a zoomable timeline view (https://www.tensorflow.org/tensorboard/tensorboard_profiling...), both for after the fact analysis (taking a fixed N second trace and then inspecting it) as well as interactive visualization (automatically scrolling timeline with option to pause and scrub).
The article was also written before the best evidence we currently have for this was published: scaling laws for natural language understanding (https://arxiv.org/abs/2001.08361), performance of RL algorithms with respect to data (eg AlphaGo Elo vs training time), image model accuracies, etc all show that exponentially increasing amounts of data/computation are required for linear improvements in performance.
I posted some graphs with more details here: http://www.furidamu.org/blog/2020/05/03/the-case-against-the...
tl;dr: current evidence suggests AI performance scales with log of data or computation
If you are interested in the topic, I recommend https://en.wikipedia.org/wiki/Blueprint_(book)
- Go was too slow and GC too much overhead (real time analytics)
- Error handling and propagation is insanely verbose in Go, the C++ actually was more concise
- lack of generics made it impossible to reuse complex high-performance data structures and algorithms even within the project
Haven't looked back and between C++, Rust, Swift and Python, I'd never choose to use Go again.
Seems like a pretty clear cut case for not mentioning the name.
You might want to make it clearer that the agents don't actually receive any visual observations, but rather directly the xy positions of all other agents and objects.
This also seems very similar to "Capture the Flag: the emergence of complex cooperative agents" (https://deepmind.com/blog/article/capture-the-flag-science)?
Regarding the conclusion:
> We’ve provided evidence that human-relevant strategies and skills, far more complex than the seed game dynamics and environment, can emerge from multi-agent competition and standard reinforcement learning algorithms at scale. These results inspire confidence that in a more open-ended and diverse environment, multi-agent dynamics could lead to extremely complex and human-relevant behavior.
This has been well established for a while already, e.g. the DeepMind Capture the Flag paper above, AlphaGo discovering the history of Go openings and techniques as it learns from playing itself, AlphaZero doing the same for chess, etc.
Having feedback from L+1 or +2 peers is very important, otherwise it can be very hard for the committee to judge performance.
Actually "leading" a project less so - often a single "project" can be viewed as multiple components / projects for promo purposes, what counts (depending on level) is initiative, leadership, and technical contributions. It's not necessary to be the formal lead of a big project for this purpose, but rather for your senior peers to attest how well you did in those areas and how it helped the project launch X months faster, improved QPS by X or whatever metric.
As pointed out in other comments, it can be hard for the committee to see impact, so the more hard evidence you have (before/after resource usage, bugs fixed, etc) the better. Same for improving the codebase, document and show the evidence!