37
A battle is raging over the definition of open-source AI
(www.economist.com)
This is a most excellent place for technology news and articles.
"Open Source" is mostly the right term. AI isn't code, so there's no source code to open up. If you provide the dataset you trained off of, and open up the code used to train the model, that's pretty close.
Otherwise, we need to consider "open weights" and "free use" to be more accurate terms.
For example, ChatGPT 3+ in undeniably closed/proprietary. You can't download the model and run it on your own hardware. The dataset used to train it is a trade secret. You have to agree to all of OpenAI's terms to use it.
LLaMa is way more open. The dataset is largely known (though no public master copy exists). The code used to train is open source. You can download the model for local use, and train new models based off of the weights of the base model. The license allows all of this.
It's just not a 1:1 equivalent to open source software. It's basically the equivalent of royalty free media, but with big collections of conceptual weights.
Yes it is. It defines a function from input to output. It's not x86 or Arm code. It's code that runs on a different type of machine. It's a type of code that you may not be able to read, but it's still code.
Just by opening wikipedia "In computing, source code, or simply code or source, is a plain text computer program written in a programming language." So what programming language is it?
Is Maxine code "code"? And I don't mean assembler, I mean the binary stream read by the processor.
I'd say yes. People have programmed it. It's where the verb "to code" comes from.
These models are no different. They are binary streams that encode a function, a program, into a form that can be interpreted by a machine. Yes, a computer generated the code, but that's nothing new.
Neural nets are typically written in C; then frameworks abstract on top of that (like Torch, or Tensorflow) providing higher-level APIs to languages like (most commonly) Python, or JavaScript.
There are some other nn implementations in Rust, C++, etc.
Other way around. The NNs are written in, mostly, Python. The frameworks, mainly Pytorch now, handle the heavy-duty math.
We’re looking at this from opposite sides of the same coin.
The NN graph is written at a high-level in Python using frameworks (PyTorch, Tensorflow—man I really don’t miss TF after jumping to Torch :) ).
But the calculations don’t execute on the Python kernel—sure you could write it to do so but it would be sloooow. The actual network of calculations happen within the framework internals; C++. Then depending on the hardware you want to run it on, you go down to BLAS or CUDA, etc. all of which are written in low-level languages like Fortran or C.
Numpy fits into places all throughout this stack and its performant pieces are mostly implemented in C.
Any way you slice it: the post I was responding to is to argue that AI IS CODE. No two ways about that. It’s also the weights and biases and activations of the models that have been trained.
The problem is: Data is code, and code is data. An algorithm to compute prime numbers is equivalent to a list of prime numbers, (also, not relevant to this discussion, homoiconicity and interpretation). Yet we still want to make a distinction.
Is a PAQ-compressed copy of the Hitchhiker's guide code? Technically, yes, practically, no, because the code is just a fancy representation of data (PAQ is basically an exercise in finding algorithms that produce particular data to save space). Is a sorting algorithm code? Most definitely, it can't even spit out data without being given an equally-sized amount of data. On that scale, from code to code representing data, AI models are at least 3/4th towards code representing data.
As such I'd say that AI models are data in the same sense that holograms (these ones) are photographs. Do they represent a particular image? No, but they represent a related, indexable, set of images. What they definitely aren't is rendering pipelines. Or, and that's a whole another possible line of argument: Requiring Turing-complete interpretation.
I think it comes down to how it's used.
An LLM model is nothing unless it's used to process some other things. It does something. It predicts the likeliness of words following a sequence of other words. It has no other purpose. It can't take the model, analyse it in a different way and extract different conclusions. It is singular in function. It is a program.
Data has no function. It is just data.