While the ideas were mine and the prompt was long, everything below is unedited GPT4 output. Here is a fun exercise: Guess in whose style I instructed GPT4 to write it?
A Shift in Computational Paradigms
In a recent tweet, Andrej Karpathy eloquently laid out the idea of large language models (LLMs) evolving from mere chatbots to becoming something quite similar to the kernel process of a new Operating System (OS). As someone who has spent a lifetime pondering the fundamental principles of computation, I find this to be a tantalizing concept that is profoundly disruptive to our established understanding of software engineering.
Traditional Computing: A Model of Control and Determinism
In traditional computing, the software we design runs atop a robust operating system that governs the machine's I/O, computational abilities, and memory management. We, the software engineers, are in full control; we instruct the machine in a deterministic manner through a set of precise and efficient programming languages.
Emergent AI: Subroutine or Sovereign?
But AI, particularly LLMs, are introducing a seismic shift in this established order. The natural progression would be to treat AI merely as a subroutine—a tool that functions under the directive of a software written in a conventional programming language.
However, what Karpathy and others envision is not merely a slight modification but an inversion of this relationship. The AI becomes the kernel, the orchestrator, which in turn utilizes traditional software modules as its subroutines.
The Implications: Two Divergent Paths
AI as a Tool: A Loyal Servant
By keeping AI as a subroutine, we retain control. These AIs are then optimized to execute specific tasks, adding value by making our machines smarter, more human-friendly, and more efficient. They are loyal servants, doing precisely what we've instructed them to do. If something malfunctions, it is transparently trackable back to human-authored code.
AI as a Kernel: An Adaptable Sovereign
On the flip side, the “AI as a Kernel” approach results in a system that is more resilient and capable of adapting to unforeseen circumstances. Here, the AI is not just a tool, but a managing entity that makes its own decisions based on its pre-trained models and real-time data. This has the potential to be more flexible but also more opaque, relinquishing some amount of human oversight.
The Inevitability and Pragmatism
One might argue that relinquishing control to an AI kernel could be perilous. Yet, the fact remains that if there is intrinsic value in the "AI as a Kernel" paradigm, it's not a question of 'if' but 'when' someone will implement it.
Use Cases: Navigating Choices
Given the varied landscape of computational needs, the approach we choose may indeed be dependent on the specific use case. For example, the operating kernel for habitat construction robots on Mars might be better managed by an LLM. It can adapt to unforeseen environmental conditions and make real-time decisions. In contrast, when it comes to our international banking system, where transparency, traceability, and control are of paramount importance, traditional software architectures may be preferable.
Final Thoughts
As we navigate these dual pathways, we face profound questions about the nature of control, adaptation, and human-machine interaction in the computational universe. Each approach has its merits and risks, but one thing is certain: the computational landscape is on the cusp of a radical transformation. The challenge—and the opportunity—lies in wisely choosing our path.
Final Final Thoughts, after the human reflected on GPT4’s writing:
It probably does make some sense for the good actors to focus more (or mostly) on AI as a tool rather than as the kernel, just because of the path dependencies here: Perhaps the kernel approach has some pitfalls that we don’t see yet, and perhaps we can do a better job building it safely once we are better equipped with AI tools.
Also, to be clear - the LLM subroutines I’m talking about can easily themselves use software tools, which in turn can use LLM subroutines, etc. The discussion here is just about the top level — who or what is ultimately in charge, at a level that is more fine grained than just the OFF switch.
Prompt:
Andrej Karpathy tweeted today:
```
With many puzzle pieces dropping recently, a more complete picture is emerging of LLMs not as a chatbot, but the kernel process of a new Operating System. E.g. today it orchestrates:
- Input & Output across modalities (text, audio, vision)
- Code interpreter, ability to write & run programs
- Browser / internet access
- Embeddings database for files and internal memory storage & retrieval
A lot of computing concepts carry over. Currently we have single-threaded execution running at ~10Hz (tok/s) and enjoy looking at the assembly-level execution traces stream by. Concepts from computer security carry over, with attacks, defenses and emerging vulnerabilities.
I also like the nearest neighbor analogy of "Operating System" because the industry is starting to shape up similar:
Windows, OS X, and Linux <-> GPT, PaLM, Claude, and Llama/Mistral(?:)).
An OS comes with default apps but has an app store.
Most apps can be adapted to multiple platforms.
TLDR looking at LLMs as chatbots is the same as looking at early computers as calculators. We're seeing an emergence of a whole new computing paradigm, and it is very early.
```
Here is my take on it:
```
These are some amazingly thought provoking ideas.
Today, we write software in programming languages that are precise, deterministic, and very efficient. This software runs on top of operating systems that manage IO, compute, and memory resources in a deterministic way. This keeps us safe and allows us to build incredibly complex, yet reliable systems.
Enter AI. The easy step forward is for software to use an AI as a subroutine. Traditional software has full control, the AI is its tool.
What Karpathy is envisioning is a reversal of this paradigm. The AI is in control, and uses traditional software as its tools, its subroutines.
Will this prove to be most productive? Nobody knows.
And so we will pursue both paths - finding better and better ways to use LLMs us subroutines to traditional software, and empower AIs by giving them better and better tools.
The “AI a a tool” approach will result in better and better, more human accessible and human friendly machines. They will work like machines - focused on their task, at the service of humans, forever in humanity’s service, but also limited, ultimately by what the human told it to do. When something isn’t working, we will know.
The “AI as kernel” approach will result in a more resilient system that will do its best to adapt to new situation, to choose what to do. A human might or night not know what it’s doing, what’s happening, etc.
What do we want? An easy answer would be that “AI as kernel” is a threat to humanity, and one could argue we should focus on “AI as a tool”.
But the reality is - if there I value in “Ai as kernel”, someone will do it, it will happen inevitably.
So I think the real answer is: It depends on the use case. The kernel for habitat construction robots on Mars should probably be an LLM. But our international banking system - let’s keep that in traditional software?
```
Rewrite this as a blog post in the style of <NO SPOILER>