diff options
Diffstat (limited to '2021/captions')
-rw-r--r-- | 2021/captions/emacsconf-2021-imaginary--imaginary-programming--shane-mulligan--main.vtt | 697 |
1 files changed, 697 insertions, 0 deletions
diff --git a/2021/captions/emacsconf-2021-imaginary--imaginary-programming--shane-mulligan--main.vtt b/2021/captions/emacsconf-2021-imaginary--imaginary-programming--shane-mulligan--main.vtt new file mode 100644 index 00000000..5d822eae --- /dev/null +++ b/2021/captions/emacsconf-2021-imaginary--imaginary-programming--shane-mulligan--main.vtt @@ -0,0 +1,697 @@ +WEBVTT + +00:01.920 --> 00:03.280 +Hi everyone! + +00:03.280 --> 00:04.400 +My name is Shane, + +00:04.400 --> 00:09.679 +and it's truly a real honor to be + +00:09.679 --> 00:14.480 +able to speak at EmacsConf. + +00:14.480 --> 00:16.880 +I love Emacs. I love Emacs Lisp, + +00:16.880 --> 00:19.279 +and this is also another topic + +00:19.279 --> 00:22.233 +that really excites me ever since + +00:22.233 --> 00:28.160 +I got my hands on OpenAI's GPT-3. + +00:28.160 --> 00:29.920 +Six months ago, I knew that it was + +00:29.920 --> 00:33.920 +important to research this for Emacs, + +00:33.920 --> 00:35.980 +you know, asides from being somebody + +00:35.980 --> 00:39.040 +who never wants to leave Emacs myself, + +00:39.040 --> 00:41.440 +and I hope that…. + +00:41.440 --> 00:43.120 +Being one of the few Emacs users, + +00:43.120 --> 00:45.360 +possibly the only one that had + +00:45.360 --> 00:48.160 +access to GPT-3 for this long, + +00:48.160 --> 00:52.559 +I hope that I can contribute. + +00:52.559 --> 00:55.199 +So, Emacs, sorry. + +00:55.199 --> 00:58.960 +Imaginary programming is…, + +00:58.960 --> 01:01.280 +it's based on prompt engineering currently, + +01:01.280 --> 01:02.559 +but it's an abstraction over + +01:02.559 --> 01:03.359 +prompt engineering. + +01:03.359 --> 01:06.479 +You can read about prompt engineering + +01:06.479 --> 01:08.560 +and language models, + +01:08.560 --> 01:13.040 +that's quite easy to google for. + +01:13.040 --> 01:15.520 +And imaginary programming is a subfield + +01:15.520 --> 01:17.360 +of imaginary computing, + +01:17.360 --> 01:19.424 +which is just the larger domain + +01:19.424 --> 01:21.420 +of employing of computing + +01:21.420 --> 01:24.240 +that's based on imagination, + +01:24.240 --> 01:25.600 +artificial imagination, + +01:25.600 --> 01:29.920 +so, basically, dreaming up user interfaces + +01:29.920 --> 01:32.159 +instead of…, or at least partially + +01:32.159 --> 01:34.079 +dreaming them up. + +01:34.079 --> 01:41.439 +I suppose that it's a fringe paradigm, + +01:41.439 --> 01:43.759 +but it's extremely useful. + +01:43.759 --> 01:47.759 +Imaginary computing, + +01:47.759 --> 01:49.200 +if you're willing to call it that, + +01:49.200 --> 01:51.920 +would be what's used to + +01:51.920 --> 01:53.413 +imagine simulations + +01:53.413 --> 01:54.320 +for self-driving cars, + +01:54.320 --> 01:57.840 +as they're trained for example. + +01:57.840 --> 01:58.984 +But this technology finds + +01:58.984 --> 02:00.960 +its way to the public, + +02:00.960 --> 02:04.880 +and it should be in the public domain. + +02:04.880 --> 02:06.799 +So, Demis Hassabis + +02:06.799 --> 02:08.959 +he's the founder of DeepMind, + +02:08.959 --> 02:12.400 +and he did his Ph.D. in human imagination, + +02:12.400 --> 02:16.900 +now he's working on artificial imagination. + +02:16.900 --> 02:20.239 +So, just a couple of days ago + +02:20.239 --> 02:25.040 +I took AlephAlpha's world model API + +02:25.040 --> 02:28.080 +and I plugged it into Emacs's eww browser, + +02:28.080 --> 02:30.800 +and now I have a way of generating + +02:30.800 --> 02:33.840 +text for the images instead of actually…, + +02:33.840 --> 02:38.072 +so I can stay in my text only Emacs, + +02:38.072 --> 02:42.560 +which is the way it should be. + +02:42.560 --> 02:45.636 +Intelligent NFTs, I'll leave this + +02:45.636 --> 02:47.360 +for you guys to look at. + +02:47.360 --> 02:49.280 +Information bubbles. + +02:49.280 --> 02:55.360 +So, there's some potential bad outcomes + +02:55.360 --> 03:05.680 +from the runaway empowering of these + +03:05.680 --> 03:08.959 +large language models and other models + +03:08.959 --> 03:10.000 +in commercial hands. + +03:10.000 --> 03:13.680 +It's causing information bubbles and + +03:13.680 --> 03:15.680 +ways of controlling people. + +03:15.680 --> 03:19.440 +So, for example, + +03:19.440 --> 03:21.680 +micro tasks and stuff that…, + +03:21.680 --> 03:23.650 +furthermore just automating away, + +03:23.650 --> 03:26.000 +or abstracting away the role + +03:26.000 --> 03:27.680 +of a programmer, + +03:27.680 --> 03:29.360 +and the automating more and more + +03:29.360 --> 03:32.319 +increasingly abstract tasks, + +03:32.319 --> 03:33.659 +and I think the solution is to + +03:33.659 --> 03:36.319 +decentralize and break up these tasks. + +03:36.319 --> 03:39.120 +I have a potential way of doing that, + +03:39.120 --> 03:40.693 +but firstly I'll talk about + +03:40.693 --> 03:42.400 +the imaginary web briefly + +03:42.400 --> 03:44.720 +because the thing about these + +03:44.720 --> 03:48.000 +language models is, + +03:48.000 --> 03:49.280 +they can replace basically + +03:49.280 --> 03:52.159 +everything on the internet. + +03:52.159 --> 03:55.280 +So, like, replace your Wikipedia, + +03:55.280 --> 03:57.680 +or Stack Overflow, + +03:57.680 --> 04:01.519 +replace conversation if you want it with, + +04:01.519 --> 04:05.920 +from real people to chatbots instead, + +04:05.920 --> 04:13.120 +replace basically anything there's + +04:13.120 --> 04:14.959 +a website for. + +04:14.959 --> 04:17.280 +And that means that rich media has gone + +04:17.280 --> 04:20.639 +from becoming images and video + +04:20.639 --> 04:22.560 +and even from paywalls + +04:22.560 --> 04:26.400 +now into intelligent and truthful, + +04:26.400 --> 04:29.520 +because generating fictional websites + +04:29.520 --> 04:31.919 +is going to become a very easy thing to do, + +04:31.919 --> 04:35.120 +and actually the best way to do it, + +04:35.120 --> 04:37.440 +and the most useful way to do it, + +04:37.440 --> 04:40.560 +so then you need a source of truth. + +04:40.560 --> 04:43.759 +The imaginary web is a thing, + +04:43.759 --> 04:46.000 +imaginary interpreters are a thing, + +04:46.000 --> 04:50.000 +so you imagine your interpreter, + +04:50.000 --> 04:53.759 +or you overlay prompting on top of + +04:53.759 --> 04:55.520 +a real interpreter to see + +04:55.520 --> 04:57.440 +what you might want to do + +04:57.440 --> 04:58.800 +in an interpreter, + +04:58.800 --> 05:01.039 +and what you might want to say to somebody + +05:01.039 --> 05:01.919 +if you're talking to them. + +05:01.919 --> 05:03.199 +If you're inside, say, + +05:03.199 --> 05:05.840 +ERC in Emacs, an IRC client, + +05:05.840 --> 05:07.440 +and you prompt after somebody + +05:07.440 --> 05:08.479 +says something, + +05:08.479 --> 05:10.400 +then the prompt will probably suggest, + +05:10.400 --> 05:13.120 +what you might say in return, + +05:13.120 --> 05:15.199 +and then you can prompt like a multiverse, + +05:15.199 --> 05:18.800 +and you can pick from them. + +05:18.800 --> 05:23.912 +There's a bunch of crazy utilities + +05:23.912 --> 05:26.560 +for these language models. + +05:26.560 --> 05:28.960 +Paracosm vs Metaverse. + +05:28.960 --> 05:30.828 +So, Mark Zuck wants you to live in + +05:30.828 --> 05:34.320 +his virtual reality as defined by him, + +05:34.320 --> 05:36.160 +and he's going to do it + +05:36.160 --> 05:40.539 +by using these models to make you + +05:40.539 --> 05:42.639 +a fictional world that you can live in. + +05:42.639 --> 05:43.280 +You can do that, + +05:43.280 --> 05:46.400 +or you can use them yourself, + +05:46.400 --> 05:50.000 +and you build your own Paracosm. + +05:50.000 --> 05:51.440 +And I think that's an important + +05:51.440 --> 05:53.440 +ability to be able to have, + +05:53.440 --> 05:56.880 +otherwise we will be like the borg, + +05:56.880 --> 06:01.520 +and we'll be connected to Mark Zuckerberg. + +06:01.520 --> 06:06.400 +Truth is a hot topic. + +06:06.400 --> 06:08.880 +So, the way that I think we should do this + +06:08.880 --> 06:10.720 +to decentralize the language models is, + +06:10.720 --> 06:13.199 +to use Structuralism. + +06:13.199 --> 06:19.600 +Universal grammar, + +06:19.600 --> 06:21.680 +template metaprogramming, and GPT-3 + +06:21.680 --> 06:23.919 +what do they have in common? + +06:23.919 --> 06:27.759 +Well, you have some kind of basis, + +06:27.759 --> 06:31.408 +like, you train your GPT-3, + +06:31.408 --> 06:32.663 +and then you do all your prompting + +06:32.663 --> 06:33.360 +on top of it. + +06:33.360 --> 06:35.840 +Like a person is born with this grammar, + +06:35.840 --> 06:37.759 +and then they quickly learn language, + +06:37.759 --> 06:40.240 +and like with C++ templates, + +06:40.240 --> 06:42.080 +you pre-process and then + +06:42.080 --> 06:44.800 +the run time runs on that. + +06:44.800 --> 06:48.000 +So, anyway, that was a slide. + +06:48.000 --> 06:50.479 +Structuralism. + +06:50.479 --> 06:52.080 +I think you can decompile…, + +06:52.080 --> 06:52.880 +think you can break, + +06:52.880 --> 06:53.840 +so you can decompose + +06:53.840 --> 06:55.840 +the language models into units, + +06:55.840 --> 06:57.759 +but those units won't look like neurons, + +06:57.759 --> 06:59.440 +they would look like these, + +06:59.440 --> 07:01.759 +and you put them onto a blockchain. + +07:01.759 --> 07:02.744 +But you can look at that later + +07:02.744 --> 07:03.840 +if you want anyway. + +07:03.840 --> 07:07.199 +I'm going to skip straight to ilambda, + +07:07.199 --> 07:09.919 +running out of time. + +07:09.919 --> 07:12.240 +I'll just quickly show you + +07:12.240 --> 07:15.199 +the ilambda primitive in ilambda. + +07:15.199 --> 07:19.199 +So, it evaluates instead of run, + +07:19.199 --> 07:21.680 +for example, here's the reduced function, + +07:21.680 --> 07:22.632 +and you've defined your + +07:22.632 --> 07:25.520 +imaginary lambda here. + +07:25.520 --> 07:26.560 +And it doesn't have a body, + +07:26.560 --> 07:31.599 +it's just got the comment + +07:31.599 --> 07:33.120 +and the parameters, + +07:33.120 --> 07:36.560 +and that's enough for…. + +07:36.560 --> 07:38.720 +Once you have that ilambda + +07:38.720 --> 07:40.080 +that runs now as a function, + +07:40.080 --> 07:40.800 +you can stick it into + +07:40.800 --> 07:42.720 +a reduced function, for example, + +07:42.720 --> 07:46.240 +and it'll reduce this list. + +07:46.240 --> 07:50.560 +You could even remove…, yeah, + +07:50.560 --> 07:51.759 +so you kind of need the comment + +07:51.759 --> 07:56.048 +otherwise it's too hard to imagine + +07:56.048 --> 07:57.360 +what would happen next, + +07:57.360 --> 08:01.520 +but for a function you can literally + +08:01.520 --> 08:03.360 +have an idefun even without + +08:03.360 --> 08:04.639 +the argument list. + +08:04.639 --> 08:06.319 +It was just like generate-fib-sequence, + +08:06.319 --> 08:09.919 +and most likely when you run that defun, + +08:09.919 --> 08:13.759 +it would work the way you want it. + +08:13.759 --> 08:16.000 +The more information you give the idefun, + +08:16.000 --> 08:17.840 +the imaginary defun, + +08:17.840 --> 08:20.879 +the better it would capture the task + +08:20.879 --> 08:22.000 +which you're trying to do, + +08:22.000 --> 08:23.039 +in this case you want to generate + +08:23.039 --> 08:24.080 +a Fibonacci sequence. + +08:24.080 --> 08:28.319 +And yeah, you can define functions + +08:28.319 --> 08:30.560 +without having a body, + +08:30.560 --> 08:32.640 +and they run an inference instead. + +08:32.640 --> 08:34.159 +Here's a way of overriding + +08:34.159 --> 08:36.000 +the language model that's used, + +08:36.000 --> 08:40.640 +for example, using dynamic scope. + +08:40.640 --> 08:41.863 +So, under the hood, + +08:41.863 --> 08:47.040 +idefun just uses an ilambda. + +08:47.040 --> 08:50.959 +This function here just doubles things. + +08:50.959 --> 08:53.752 +So, here's a function that gets you + +08:53.752 --> 08:59.279 +a hexadecimal color just from the name. + +08:59.279 --> 09:00.160 +And you can create + +09:00.160 --> 09:02.160 +arbitrary functions like this, + +09:02.160 --> 09:04.268 +so, what we need is like a library + +09:04.268 --> 09:07.200 +of imaginary functions, I think, + +09:07.200 --> 09:12.800 +that match a language model. + +09:12.800 --> 09:15.760 +Macros on the other hand, + +09:15.760 --> 09:18.160 +as different from functions, + +09:18.160 --> 09:20.000 +they actually macro expand + +09:20.000 --> 09:21.360 +and generate code. + +09:21.360 --> 09:23.279 +So, when you macro expand this, + +09:23.279 --> 09:26.320 +you'll get this, + +09:26.320 --> 09:30.000 +and that's because this has an arity of 3, + +09:30.000 --> 09:31.839 +and then when you macro expand + +09:31.839 --> 09:32.959 +that underlying macro, + +09:32.959 --> 09:35.120 +it generates the actual source code. + +09:35.120 --> 09:37.839 +You can actually run these macros, + +09:37.839 --> 09:41.279 +and it will cache the output…, + +09:41.279 --> 09:42.480 +it will catch the source code, + +09:42.480 --> 09:44.240 +so the macro runs the same + +09:44.240 --> 09:45.839 +every single time, + +09:45.839 --> 09:47.519 +or generates the same code, + +09:47.519 --> 09:48.560 +but you can just use it + +09:48.560 --> 09:49.920 +to generate code really easily + +09:49.920 --> 09:52.000 +while you're programming. + +09:52.000 --> 09:55.920 +I hope that this has been informative, + +09:55.920 --> 09:57.600 +it wasn't too much time, + +09:57.600 --> 10:00.312 +but there's plenty of material + +10:00.312 --> 10:01.680 +for you to dig into it more + +10:01.680 --> 10:04.000 +if you're interested. + +10:04.000 --> 10:04.959 +Thank you very much + +10:04.959 --> 10:09.519 +for letting me talk today. + +10:09.519 --> 10:15.680 +Peace out! + +10:15.680 --> 10:16.680 +[captions by bhavin192 (Bhavin Gandhi)] |