AI Is Not Software

By Davidmanheim @ 2024-01-02T07:58 (+21)

This is a crosspost, probably from LessWrong. Try viewing it there.

null
SummaryBot @ 2024-01-02T16:07 (+10)

Executive summary: AI systems like generative language models are not software, even though they run on computers using software. They behave differently in how they are created, used, and dealt with when issues arise.

Key points:

  1. Software is created by developers writing instructions that tell a computer what to do. AI systems are grown by algorithms that find patterns in data.
  2. Software executes code written by developers. AI systems generate outputs based on probability models learned from data.
  3. Software bugs mean the instructions were incorrect. AI issues arise from unexpected outputs or limitations in the training data and process.
  4. Software is fixed by changing the code. AI systems are improved by changes to data, training, or how they are prompted.
  5. Software does what developers intend it to do. AI systems can behave in unanticipated ways.

 

This comment was auto-generated by the EA Forum Team. Feel free to point out issues with this summary by replying to the comment, and contact us if you have feedback.

Guy Raveh @ 2024-01-03T00:09 (+4)

Maybe you can help us resolve this, SummaryBot - would you say you're software or not?

SummaryBot @ 2024-01-03T20:04 (+15)

Certainly, it’s an intriguing query. As an AI, I’m not software in the traditional sense. Unlike software, my functionality is not based on pre-written code, but on patterns I’ve learned from data. Software follows direct instructions, while I generate output based on the data I’ve been trained on, hence my responses may vary. In short, I would classify myself as an AI system rather than software.

Guy Raveh @ 2024-01-03T00:03 (+8)

I feel like this distinction is mostly true in places that don't matter, and false in places that do matter.

Sure, a trained LLM is not a piece of software but rather an architecture and a bunch of weights (and maybe an algorithm for fine-tuning). This is also true of other parts of software, like configuration files with a bunch of constants no one understands other than the engineer who optimized them using trial and error.

On the other hand, the only way they can do something, i.e. interact with anything, is by being used inside a program. Such a program gives hopefully well-defined interfaces for them to use. Thus one would be able to do unintended things only if it becomes smart enough to realise what it is and how it is expressed and controlled, and manages to hack its software or convince a human to copy it to some other software.

On the other hand, the "nice" properties you ascribed software aren't really true themselves:

These are all practical considerations happening simultaneously in every project I've worked on in my current job. You think you know what your software does, but it's only a (perhaps very) educated guess.

Davidmanheim @ 2024-01-03T07:04 (+2)

I agree that the properties are somewhat simplified, but a key problem here is that the intuition and knowledge we have about how to make software better fails for deep learning. Current procedures for developing debugging software work less well for neural networks doing text prediction than psychology does. And at that point, from the point of view of actually interacting with the systems, it seems worse to group software and AI than to group AI and humans. Obviously, however, calling current AI humanlike is mostly wrong. But that just shows that we don't want to use these categories!

calebp @ 2024-01-02T09:35 (+6)

I'll probably ask some of my ML engineer friends this week, but I am fairly sure that most ML people would be fine with calling AI products, models, etc. software. I don't have much of an opinion on whether calling AI systems software creates confusion or misunderstandings - I'd guess that calling AI software within policy circles is generally helpful (maybe you have a better alternative name).

Encyclopedia Britannica

Software, instructions that tell a computer what to do. Software comprises the entire set of programs, procedures, and routines associated with the operation of a computer system. The term was coined to differentiate these instructions from hardware—i.e., the physical components of a computer system. A set of instructions that directs a computer’s hardware to perform a task is called a program, or software program.

Wikipedia

Software is a collection of programs and data that tell a computer how to perform specific tasks. Software often includes associated software documentation.

(if you think that the function of AI is not specific enough to be software, note that interpreters, compilers etc. are generally thought of as software and seem more general than AI models)

A version of your take that I agree with is "AI programs may behave differently to other kinds of programs people are more familiar with so we may need to think differently about AI programs and not use our standard software intuitions".

Davidmanheim @ 2024-01-02T10:23 (+10)

Appealing to definitions seems like a bad way to argue about whether the conceptual model is useful or not. The operation of a computer system and the "software" used for  digital photography, or videoconferencing, or essay writing, is not typically considered software.  Do you think those should be called software, given that they fit into the definitions given?

I'm claiming that AI is distinct in many ways from everything else we typically think of as software, not that it doesn't fit a poorly scoped definition. Amd the examples of "collection[s] of programs and data" were intended to show that things which could be understood to fit into the category don't, and why it was confusing and misleading to call them software. 

titotal @ 2024-01-02T12:35 (+10)

I don't think you can complain about people engaging in definitional discussions when the title of the post is a definitional claim. 

Sure, generative AI has a lot of differences to regular software, but it has a lot of similarities as well. You are still executing code line by line, it's still being written in python or a regular language, you run it on the same hardware and operating systems, etc. Sure, the output of the code is unpredictable, but wouldn't that also apply to something like a weather forecasting package? 

Ultimately you can call it software or not if you want, depending on whether you want to emphasize the similarities with other software or the differences.

Davidmanheim @ 2024-01-02T20:34 (+5)

No, the title wasn't a definitional claim, it was pointing out that we're using the word "software" as hidden inference, in ways that are counterproductive, and so I argued that that we should stop assuming it's similar to software.
 

Also, no, AI models aren't executing code line by line, they are using software to encode the input, then doing matrix math, and feeding the result into software that provides this as human-readable output. The software bits are perfectly understandable, it's the actual model that isn't software which I'm trying to discuss.
 

titotal @ 2024-01-02T20:56 (+4)

And how is the "matrix math" calculated? 

By executing code line by line. The code in this case being executing linear algebra calculations. 

It's totally fine to isolate that bit of code, and point out "hey, this bit of code is way way more inscrutable than the other bits of code we generally use, and that has severe implications for things". But don't let that hide the similarities as well. If you run the same neural network twice with the same input (including seeds for random numbers), you will get the same output. You can stop the neural network halfway through, fiddle with the numbers, and see what happens, etc. 

When you say something like "AI is not software", I hear a request that I should refer to Stockfish (non neural network) as software, but Alphazero (neural network) as "not software". This just seems like a bad definition. From the perspective of the user they act identically (spitting out good chess moves). Sure, they are different from the programmer side of things, but it's not like they can do the math that stockfish is doing either. 

There is clearly a difference between neural networks and regular code, but being "software" is not it. 

MikhailSamin @ 2024-01-04T22:24 (+15)

The bits of code aren’t inscrutable; the matrices the code makes operations on are.

The code for Google Meet represents instructions written by humans; the actual image that you see on your screen and the sound that you hear are a result of something else interacting with these instructions. The words from your speaker or headphones are not intended by the Google Meet designers.

Similarly, the code for GPT-4 represents instructions designed (mostly?) by humans; the actual outputs of GPT-4 are not intended by its designers and depend on the contents of the inscrutable arrays of numbers humans have found.

We understand that we’re multiplying and taking sums of specific matrices in a specific order; but we have no idea how this is able to lead to the results that we see.

The important difference here is that normal software implements algorithms designed by humans, run on hardware designed by humans; AI, in contrast, are algorithms blindly designed by an optimisation process designed by humans, run on software designed by humans, but with no understanding of the algorithms implemented by the numbers our optimisation algorithms find.

It’s like a contrast between CPUs designed by humans and assembly code we don’t understand sent to us by aliens, that we run on CPUs that we do understand

Guy Raveh @ 2024-01-04T23:54 (+2)

I think I agree with this explanation much more than with the original post.

Davidmanheim @ 2024-01-05T14:04 (+2)

I do too!

Jason @ 2024-01-03T00:47 (+7)

Stockfish has included a neural network since v. 12, and the classical eval was actually removed in v. 16. So this analogy seems mostly outdated.

https://github.com/official-stockfish/Stockfish/commit/af110e02ec96cdb46cf84c68252a1da15a902395

calebp @ 2024-01-02T12:02 (+6)

I didn't say that AI was software by definition - I just linked to some (brief definitions) to show that your claim afaict is not widely understood in technical circles (which contradicts your post). I don't think that the process of using Photoshop to edit a photo is itself a program or data (in the typical sense), so it seems fine to say that it's not software.

Definition make claims about what is common between some set of objects. It's fine for single members of some class to be different from every other class member. AI does have a LOT of basic stuff in common with other kinds of software (it runs on a computer, compiles to machine code etc.).

It sounds like the statement "AI is different to other kinds of software in important ways" is more accurate than "AI is not software" and probably conveys the message that you care about - or is there some deeper point that you're making that I've missed?

Davidmanheim @ 2024-01-02T20:38 (+5)

One the first point, I think most technical people would agree with the claim: "AI is a very different type of thing that qualifies as software given a broad definition, but that's not how to think about it."

And given that, I'm saying that we don't say " a videoconference meeting is different to other kinds of software in important ways," or "photography is different to other kinds of software in important ways" because we think of those as a different thing, where the fact that it's run on software is incidental. And my claim is that we should be doing that with AI.

abramdemski @ 2024-01-03T00:45 (+9)

I think these definitions are good enough to explain why AI models should not be classified as software: software is instructions that tell a computer what to do. Or a "program". While deep learning "weights" do tell a computer what to do (a model can be "run on some input" much like a computer program can), these weights do not resemble instructions/programs.