Transcription
[Music] Hello everyone. My name is Alexey Lobzov, and I am the Head of Competency Development for System Analysis at Alfa-Bank, and also a member of the Program Committee for the Flow Conference. Today, we have a discussion with a rather provocative title: "When Will Neural Networks Replace the Analyst?" I hope they won't replace the analyst, but we will find out during our discussion. We have with us experts in ML, Pavel Filonov and Sergey Markov. And now, I would like to hand over the floor to my colleagues so that they can briefly introduce themselves. Perhaps we'll start with Sergey. Sergey, the floor is yours. Hello everyone. My name is Sergey Markov. I head the Experimental Machine Learning Systems Department in the Data Science department. Among my major recent projects related to large language models, of course, is not ChatGPT, which many of you have probably heard of. But actually, not only that. My department is involved in creating many systems based on modern machine learning models. Well, perhaps, if I were to put it briefly, that's it. But in general, I am a person passionate about science. Thank you. Pavel, tell us a little about yourself. At first, I thought I had rashly used these letters for the title of my report, which was recent, so I was immediately invited as an expert. But it just so happened that I have indeed been involved in this area for the last seven years, and in recent years, I have had a very specific task: I come as a consultant to various business clients and try to answer their question: do they need it, and in what form? Well, for about a year now, almost everyone has been asking: do we need some kind of GPT? Everyone usually knows it by this name. Well, I quickly do it for them now, it's called large language models. Let's discuss it. And specifically, in your case, will it help you, hinder you, or will you not feel it at all when it's implemented? Thank you. To kick off our discussion, I propose to set the context a bit by considering the main tasks of a system analyst. In general, what does the software development lifecycle consist of? I propose to rely on the following model, which is conventionally divided into five stages: analysis, design, development, implementation, and maintenance. And in my opinion, it is precisely at the first two stages that the greatest involvement of the analyst is required. What happens at the analysis stage? The problem that the business has is identified, needs are gathered, requirements are formulated, goals are set, and goals that are aimed at solving business problems. Then, at the design stage, the design of an information system takes place, the architecture, data model, and so on, and so forth, which will subsequently go into development. Probably, at the first two stages, the analyst is involved the most. It is clear that he is also involved at other stages, but I propose to focus on these two stages and try to understand: will artificial intelligence, in the long run, replace the analyst when working on requirements and design, or, conversely, will it become a tool that will increase the analyst's efficiency in performing their tasks? For now, I'll leave this question hanging and think we'll find an answer during the discussion. Perhaps we'll start with requirements. Sergey, what do you think? Can artificial intelligence help us in gathering requirements, for example? And perhaps you know of any solutions that already exist? Yes. Well, generally, if we talk about artificial intelligence, then perhaps we need to, as bearded men are accustomed to do, agree on definitions. What do we actually understand by artificial intelligence? And this definition has a rather interesting history. It was first voiced in '56, often attributed to John McCarthy. And what scientists and specialists understood by artificial intelligence then, and what specialists understand by artificial intelligence to this day, are large areas of science and technology that deal with automating the solution of intellectual tasks. If there is a task that you solve using your intellect, and you create a machine that can replace you in solving such a task, you are engaged in this very artificial intelligence. And in fact, this has been around for many years. It appeared long before the term itself appeared. People have always adapted various technological solutions to solve the most diverse intellectual tasks, starting from, I don't know, abacuses, methods of recording something on paper, on papyrus, and so on. And today, our technologies are becoming more sophisticated. Yes, and they certainly relieve us of a considerable portion of some kind of intellectual routine. Today, you no longer multiply, say, three or four-digit numbers in your head; you go and use a calculator. Today, you don't keep the content of all the books in your professional field in your head; you go to Google, use search engines that are also based on modern technologies like artificial intelligence. And of course, these technologies are gradually expanding the scope of their impact on human society, thereby changing the very nature of the intellectual activity we engage in. There is a constant paradigm shift, and in software development, this is not something fundamentally new. Gradually, technologies have entered this sphere and transformed it. In the 1940s and 1950s, a developer would take a punch card, punch holes on a card or paper tape, then it moved to writing machine codes on forms, then low-level languages like assembler appeared, the first step towards using natural language for developing software systems appeared, and technology didn't stop there. Then, high-level languages replaced low-level languages, then large libraries of methods appeared that could be reused, and you no longer had to write bubble sort or some Ford-Fulkerson method or anything else from scratch. You could simply use a library function. In the 90s and early 2000s, the dawn of social platforms for development, like GitHub, occurred, and this also turned out to be another paradigm shift in development. I remember development in the 90s when a cool specialist was a person who had read all three volumes of "The Art of Programming," cool. And preferably, something on graph theory, like an introduction to development, algorithm analysis, and so on, and so on. And this person, locked in a room, in four walls, deprived of any connection with the outside world, could sit down at the keyboard, and solve some problem of the Yasin set. And this was a good programmer. But indeed, truly good programmers looked like this back then. Today, you only need to know the basics, go to Stack Overflow, write a query, find the topic you need, and copy the ready-made code from there. And the most important skill here is the ability to copy a question from an answer, code. And if you do this, everything will likely be more or less fine. And today is another step. Large language models have appeared that help us generate program code. They do smart autocompletion, for example, speeding up just typing code. They can generate entire blocks of program code from instructions in natural language. They can find vulnerabilities and defects in program code. And essentially, they eliminate the need for you to manually go and make some requests. You just write, say, comments before the body of your function in natural language, and smart autocompletion immediately generates the body of the function that performs the functionality. Naturally, this has boosted some areas and lowered the entry barrier for specialists. And some are already saying, "Soon we will fire all programmers, and finally, managers, analysts, and all other people will start writing program code themselves, right in natural language." But, you know, from the perspective of a programmer from the 50s, we are all such very deep managers. We don't smell machine codes, we don't remember the machines we program on. But try to remember how the instruction for adding two numbers located in the processor memory is encoded. Therefore, in reality, the field itself has long been transformed under the influence of artificial intelligence technology. Of course, this has not led to any replacement of people. It's a non-zero-sum game, like any technological progress. It turns out that the improvement of technology leads to a change in the scope of its application. That is, the sphere of application of software engineering expands. It begins to be applied in areas where it was previously simply unprofitable and impossible. In the 1960s, who could have thought that 20 computers would be enough for the whole country? Today, every smartphone contains computational power that exceeds all computational power at the time of sending a person to the moon. Nevertheless, we find amazing applications, say, for bird watching, pig breeding, solving complex ballistic problems using these pocket computers. Therefore, here it is more about increasing labor productivity, and including the transfer of tasks to writing in the subject area, writing some analytical documents, creating some fundamental architectures of a product based on interviewing customers, and so on, and so on. These are all tasks where labor productivity will increase thanks to generative language models. But this will lead to an expansion of the application areas of software engineering. It will, of course, change the work itself, elevate it to a more abstract level. That is, there will be less manual text writing and more, say, reading options generated by a generative model, and refinement. Analysts will operate at higher levels of abstraction, developers will operate at higher levels of abstraction. Some areas will indeed be absorbed, but on the other hand, the boundaries of complexity of the software systems we create and their application areas will expand. So, I think it will all simply serve as another expansion of our field. So, what I heard is that these generative models will generate some text options, the same requirements, with which analysts can then work. In fact, it's a kind of consultant for the analyst. And perhaps, to some extent, I'll even ask a question: to what extent can systems like these be compared to search engines? If I have a question, I go to a search engine, type it in, and it gives me some search results. Can generative models, artificial intelligence systems, be compared to search engines or not? Pavel, I'll probably involve you with my opinion. Let's. In fact, you are generally seeing correctly, especially if we are talking about the requirements gathering stage. Because often, if you come into a new domain area and you know that there will be functional and non-functional requirements, you immediately understand. But what might there be? What should not be forgotten, because there might be some nuances? Here, as a template, you can either go and search. I don't know, you come to a project for developing mobile games for phones and want to take some template. You've never done this before, you haven't been in such projects. A template will clearly help you. You can search for it on the internet, but there will likely be many similar ones, but slightly different. Or you can indeed ask a language model: "Generate a sample template for functional and non-functional requirements for developing this type of application." And you will get some text. You will even likely see some structure in it. You will recognize some patterns characteristic of these requirements. But most likely, it will only be a template. To turn it into a document for your project, you will have to significantly refine it. In fact, it will allow you to overcome this first stage of blockage, that is, you will be able to break through this section and edit it. It's always easier. But I think you shouldn't stop there. This is one of the problems, underestimating modern tools, when they simply say, "It's just a new search." In fact, it's sometimes more interesting to look at a more, let's say, end-to-end story. The fact is, let's analyze this example of gathering requirements further. After creating some template, you will probably go to the technical teams for clarification. And it's not excluded that it will be correspondence by email, or it could even be some meetings and calls where either you will frantically try to keep up and write down all the minutes, or if it's difficult for you to speak and write at the same time, you will most likely just turn on the call recording. And it would be good if someone could then take this recording, automatically transcribe the entire text, and even summarize it from the entire text. And this summary, in the form of, say, two paragraphs that you actually talked about for an hour, but in reality, there might be something useful, 2-3 paragraphs, to insert, after, of course, refining it yourself, but to insert into the resulting product requirements. I think it's important to understand, even during, say, requirements gathering, which stage takes how much time. Because if we are talking about searching for a template, it is likely an incredibly short stage. You found the template, that's it. Then for months you start developing something based on it. If you speed up the search for a template, it won't give you a significant advantage. But if, during this month, you have to conduct, say, 20 meetings with different representatives, gather these details from them, then analyze them, sometimes you might have to do manual transcription of these videos. Here, precisely in the work plan that takes the most time for you, if you find a way to apply some of the modern tools, you will already see a tangible gain, a tangible one. It might save you 10 percent of your time, 15 percent. I don't really believe in 2x, 3x, or 10x yet, because it's unlikely that you spend 100 percent of your time on these calls, and you still have to be present somehow. I truly don't exclude the possibility that someday you can send a virtual instead of yourself. You can't yet, but I don't exclude that they will surprise us in the coming years, and you will be able to, imagine, Alexey, be present on four calls simultaneously. And moreover, minutes will be taken from all four calls. When we get to that, there's a feeling that we will. This, I think, will be a significant boost. But for now, it takes a little time. We need to use what we have now, for example, transcribing calls, summarizing, highlighting the main essence, and, say, compiling it into the text of requirements. This, I think, can already bring some 10 percent time savings. And 10 percent is indeed significant, especially when compared to searching for templates, which are usually available in large organizations, and in principle, this search should not be difficult. But the next question arises: the question of trust. That is, as an analyst, I work with texts, I work with users, with other experts, I gather information. I can trust myself. How can I trust a program? What influences the ability to say that the program has indeed extracted what is needed, the essential things? Sergey, can you share? Yes, this is actually a very frequently discussed problem. Everyone likes to talk about hallucinations of language models. In fact, all our lives they were called factoids. Well, hallucinations, in fact, what are hallucinations? Imagine you've cornered a student at an exam. And they have to answer, but they don't know the answer. They forgot it, maybe they never even knew it. But they know they can't stay silent. And they start generating something, something that will pass. And a language model, of course, despite tens, even hundreds of billions of parameters of modern language models, still cannot learn the entire internet, imagine it in its weights. And the knowledge of a language model is a blurred reflection of the entire internet, so to speak. And periodically, you ask some question. Well, due to the stochastic nature of generation, the model doesn't firmly remember something. It starts generating something very plausible for you, but it's completely unreliable. Those of you who have interacted with other such models know that they periodically talk complete nonsense with a confident look. But this problem is generally well-known and currently has several mainstream solution paths. And one of them is, in fact, connecting generative and extractive models, generative search. The idea is that you can make a query to corporate knowledge bases, to the internet, and so on, using modern search technologies, extract some relevant fragments of information that are related to the user's question, and then feed them to the language model as input. This can be done in different ways: simply feed it, using this information, to answer the user's question, or through some mechanisms like RAG. This can be done. And the advantage of this approach is that you can get not only the factual information that the extractive model could obtain in the language model's answer, but also get links to the sources of this information. And in this sense, working with transcripts of meetings, conferences, and so on, is likely to be done with modern language models because a template is produced. So, if you are going to use a language model for system analysis tasks, use it in synthesis with an extractive model, and in the answers, you will always have a link to the part of the transcript where the necessary information is contained, and you can check at any moment whether the model correctly understood what was said there. Here, the question of trust is not so unambiguous regarding people. But as they say, half the trouble is when there's a question of trusting yourself, although it's sometimes dangerous to trust yourself. But when people are overloaded with information and communications, and so on, it's very easy to forget something, confuse something, and so on. But when creating truly large systems today, entire teams of people are involved, and one person might conduct meetings and interviews, and someone else might write the requirements. How does this happen in large projects? And here the question arises: how accurate was your colleague? Did he make a mistake? Those who have developed truly large software products with complex, large requirements know that these communication problems actually very often affect efficiency. In general, it should be said that the complexity threshold of the systems being developed is largely related to communication. One person, starting from a certain project scale, cannot do it. You need to create teams of developers, analysts, and so on. But the larger your team becomes, the more the number of interactions between team members grows, and it grows quadratically, not linearly. Therefore, starting from a certain project size, you simply hit the threshold of impossibility. That is, there is so much communication, it becomes so complex that people are unable to maintain it. And in this sense, advanced artificial intelligence technologies are one of the ways, including, to overcome this complexity threshold. But, say, I don't know, each of us has a limited number of slots for information in our heads. You can know several hundred people. When you meet, say, the 201st person, you forget someone at that time. But in general, the capacity of human understanding, human memory, is about one petabyte, and this is a very important limitation that artificial intelligence technologies can overcome. You put on smart glasses, look at a person, the glasses recognize their photo, the system pulls up their name from the database, and you are freed from the awkwardness of forgetting their name, forgetting, say, the context of interaction with this person, and so on. The same applies to smart search of transcripts, summarization, access to all communication and interaction history, and so on. These are all very powerful tools, in fact, that expand possibilities. Thank you. I also heard that neural networks require some training on a certain array of data, and we know that there are some open systems, like ChatGPT, which offer their interfaces. But companies also have their own local context. And I'm interested in how much the influence of this local context is significant, particularly, for example, in the task we are currently considering: transcribing interview results. And if the context is indeed significant, does it mean that all companies that want to use this tool need to implement their own networks? How to train them? In fact, they have thought about this problem, because there are even three levels of solutions. The first, Sergey mentioned it, is that if the context size allows, you can put as many characters in at once. Currently, this is measured in tens of thousands of words, but it's constantly growing, and it's likely that this limitation will soon be removed altogether. It's just that, along with the question, first you tell it the whole story, if it fits into this volume. This is the simplest way. It just works, so to speak, out of the box. Most likely, if we need to load more information than, say, 10 or 20 kilobytes, then you can use the stage of fine-tuning or light retraining. Moreover, for large language models, there are even special methods that allow this to be done, but without significant investment, so to speak, for more modest resources and hardware than their initial training. And of course, if you have money to burn, so to speak, have access, most importantly, including original training sets, or you have your own comparable in volume, then it most likely means that you are in the top 3 companies in the world. And you can, of course, start tailoring it completely to yourself, but this is probably a rarity. The main advantage of what is currently used is that there are pre-trained models, and essentially, the most profitable scenario is to use a pre-trained model, perhaps slightly fine-tuning it with your specific names, specific contextual connections. Here, specialists in machine learning are still required who can organize this fine-tuning, but it is becoming, in my opinion, simpler and more transparent, and soon it will become accessible to a larger number of specialists who work with them. So, the short answer is: they have thought about it. There are even several ways, so to speak, increasing in complexity. Yes, and in general, these technologies are developing at lightning speed. Firstly, such an important direction as low-rank adaptation, so-called LoRA, and all the methods that have appeared around it. When you can indeed fine-tune a large language model with very modest resources, so to speak. But in general, the beauty of large language models is that they have acquired a lot of knowledge during the pre-training stage, and they often need a very small number of examples for generalization, unlike machine learning models of the previous generation. So, in general, yes, ready-made solutions for solving such domain adaptation tasks for large language models are actively developing in the B2B segment. But here, the mechanics are also related to multi-expertness, when you create bridges that allow large language models to interact with other third-party systems, with other models, services, actors, with corporate data storage, and so on, and so on. That is, what can be seen in the example of plugins, so-called. And these approaches are also developing very rapidly. And what is especially pleasant here is that, well, it seems to be a very natural way to solve some organic limitations of language models. People, for example, also cannot calculate quickly, just like modern Transformers. But we can take a calculator and use other tools. In essence, this paradigm of language models using various tools is actively developing. Instead of calculating an arithmetic problem itself, the language model generates a request to a calculator or some computational engine that performs the necessary calculations, and the model then uses the calculation results. The same can happen with any corporate systems. Well, it's time for announcements. Announcements of upcoming reports. So, I think we'll take a short break, and we'll return to our discussion in a couple of minutes. By the way, this whole story with extending model contexts is not so simple, because, you know, full attention, full attention, is not reducible to quadratic complexity. All these works where the context has been extended to a trillion tokens, there is a bit of deception in all of this, because it cannot be done without losses. That is, the expansion of context happens only because we no longer capture all the connections in this context. Therefore, in current practice, these models are more of an academic direction. In practice, models with full context are limited. But here, it's good that modern positional encoding mechanisms allow using the model on longer contexts than it was trained on. For example, the same Llama, rotational embeddings, they generally allow feeding twice the context to the model than it saw during training. In general, it doesn't fall apart, but the computational complexity is still quadratic. Therefore, as the context lengthens, the number of necessary calculations grows as the square of its length. So, this is not a solution. These are rather clever sparse attention mechanisms, or synthesis with an extractive model that can look at a long context and extract from it. It's clear that alternative mechanisms are also being studied, including based on competitive modern architectures, and so on. Maybe it will take off. It looks interesting. Interesting if everything returns, because recurrent networks were temporarily forgotten due to the active development of Transformers. And maybe there will be a return to the works of Jürgen Schmidhuber. Yes, but here it's interesting that there is such a benchmark as Long Range Arena on Papers With Code, where you can see that modern recurrent architectures are very bad. All these. So, the next question, by the way, Sergey, it seems you sent the link to the wrong chat. This is a technical chat. You can also send it to the main chat at the end of the discussion. [Music] And we are returning to our discussion. During this short break, we discussed some questions with colleagues regarding the topic at hand, and during the discussion, I heard several terms unfamiliar to me, for example, recurrent architecture, benchmarks. I don't remember what we were referring to, something interesting. And a question immediately arises: if we say that artificial intelligence and neural networks can become a tool that improves the analyst's work, how deeply does the analyst need to delve into terminology? How deeply do they need to understand it? Can you recommend some steps for an analyst to, first, get acquainted with this field, and second, start applying it? How easy is it, or is it possible? Sergey, let's hand over the word to you. Yes, well, I think to some extent, we all inevitably need to understand this. Of course, if you use a modern computer, you don't need to delve into all the details of the circuitry that underlies it. But nevertheless, many words that initially appeared in the lexicon of computer science, when they entered everyday language today, are understood by everyone. So, there will be some kind of compromise here. That is, to some extent, we will all know a little more about it than we knew before. But still, the complex mechanics, the last kilometers, will only be known by specialists. What to do now to delve into knowledge in this area? This is actually a very good and very difficult question, because our field is developing so rapidly. The authors of books, manuals, training courses, and so on, it's very difficult to keep up with progress. I felt this pain firsthand because I've been writing a book for several years dedicated to the history and current state of artificial intelligence. It has already exceeded "War and Peace" in volume. And when there are pauses related to, say, the text needing to be proofread by a corrector or someone else, during that time, 4, 5, 6 very important works in machine learning are published, which need to be urgently added to the text of the book, and so on. This is a monstrous new story. This repair will eventually have to be stopped and completed at some point. In general, if you want to delve into the intricacies, into the technology, there are, of course, classic manuscripts like "Deep Learning," a great book in Russian. But it's clear that such a deep dive might not be necessary. What to recommend to a broad audience? Honestly, I'm not ready. But I am ready. As far as I know, you are somehow involved in training, either you were or are currently. Yes, I am constantly involved in training in one way or another. And here, I would actually recommend starting with practice. I think this is a faster and more practice-oriented, therefore useful path. And what's interesting is that you can already start with different tools. Sergey, why don't you shy away? Because, in fact, of all the available tools, the easiest to start using is actually ChatGPT, which Sergey has already mentioned. The fact is that there are competitors, but getting to them involves a long path through VPNs, through cards, through other phone numbers. And at the same time, it's probably just asking Sergey to throw a working link into the main chat. And this helps them somehow. So, there's a joke that Excel has an incredible number of functions, but the average person uses a few of its capabilities. And those who want to increase their productivity use ten or fifteen. So, you can delve deeply into these tools, because everything will likely start with a simple chat, then you'll want to open the so-called additional contextual prompt, then you'll want to play with some sliders, like, say, entropy or generation randomness. And sooner or later, this can turn into a real control panel with, say, 10 sliders, several input fields, several additional buttons, and most likely, different tools. And you will already understand when one is suitable and when another is. I think not everyone needs to reach this level, but if you start little by little, and you see that it brings more and more benefit, I don't exclude the possibility that it will reach a situation. I've seen people who are not deeply immersed, but they are already downloading simplified versions of these models onto their computers. They are already running them because there are generally understandable tutorials. And then, I think, tutorials will even start appearing on how to get them. Here, however, you will have to read, preferably read the books that Sergey referred to, but this is already a disappearing percentage, I think. But the majority can get a visible result at the very early stages. Well, perhaps we should also touch upon the issue of the limitations of artificial intelligence and its future. We don't have much time left, so perhaps briefly share your knowledge. Are there any limitations to artificial intelligence? Yes, as in our physical world. Very often, people forget that, well, any computations are ultimately physical processes. Information cannot be transmitted faster than the speed of light. Machine elements cannot be made smaller than the Planck scale. That's why in the 50s, they understood that there is a fundamental limit: a machine cannot perform more than about 10^16 operations per second. This is what Roman famously wrote. There are also more severe unpleasantries in the world around us. The Landau principle: every time your system loses one bit of information, a certain amount of heat is released. In fact, you cannot compute without losing information. And because of this Landau principle, your computer starts to overheat very quickly. And if you don't want it to evaporate, you also need to limit the speed of computation. This is one side of the coin. The other side of the coin is that many intellectual tasks belong to the category of exponential complexity, X-time complete. We live in a multi-agent environment. To choose an optimal action, we need to predict the actions of other agents, and so on. And our responses, the responses of other agents, and so on, all quickly lead to a combinatorial explosion. That is why the intelligence of a system depends not linearly, but logarithmically on its computational power. Therefore, these physical limits, plus these computational limits, lead to the fact that there will likely be no explosion of superintelligence. But we will likely be able to create systems that will confidently surpass the human brain, because evolution has imposed quite strict limitations. For example, I don't know, memory should not be reset by a blow to the face. There should not be more than 1.3 volts of voltage in the brain, otherwise water and oxygen will decompose with unpleasant consequences for our heads. We will sooner or later overcome these limits and create systems that surpass the human brain. But there will likely not be the total superiority that science fiction writers write about. But technologies are designed to enhance and expand our capabilities. As Douglas Engelbart and Fredkin wrote back in the early sixties, humanity will acquire algorithmic wings to soar like a phoenix. And we, of course, dream of such a thing. Thank you very much for the detailed answer. I think it's time to summarize. What I have gathered from this discussion as an analyst: First, for an analyst, artificial intelligence systems and neural networks can become an excellent tool that can improve their performance. Second, this performance can be improved not in all tasks. Objectively, a business requirements template can be found. But how much time will I spend transcribing dozens of interviews if I do it manually, listening to each one? Therefore, the task must be chosen appropriately. The one that I have noted for myself to delve into is to take it and use it. And only after trying it can a conclusion be made: does it fit or not? If it fits, then you can delve deeper. And yes, technologies do not stand still, they are developing, and I hope that with each month, with each year, they will become better and better and make our lives even more beautiful. At this point, I thank all the participants of the discussion. I wish the viewers a successful continuation of the conference, interesting and useful reports. Thank you very much, everyone. Thank you, everyone. Goodbye.