📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Fine-tuning, RAG, Llama, prompt-engineering, LLM-арены | Что происходит в LLM

DeepSchool13:42

Transcription

Всем привет. Меня зовут Илья Ди́мов. Вы на канале Deep School. Если вы пропустили всю шумиху вокруг больших языковых моделей, ничего страшного, сейчас нагоним. Поехали.

LM — это класс моделей, которые учатся продолжать текст по заданному началу. Архитектурно сейчас это почти вся трансформер, который пришёл на смену рекуррентным нейросетям. Трансформеры вообще сейчас доминируют во многих областях. Они успешно работают с текстами, с картинками, со звуками и даже сырыми байтами.

Современные языковые модели умеют писать тексты, неотличимы от человеческих. Могут даже написать книгу. Которыми... Нет, не буду ругать Amazon, то меня засудят. Дже́сс... Могут даже написать книгу вместе с человеком, а могут и вовсе без человеческого участия. Но это звучит довольно скучно.

Что ещё? А что ещё помимо продолжения текста LM можно использовать как классификатор? Например, можно подать ей текст и спросить: "Он грустный или весёлый?" И она выдаст одно слово, являющееся ответом. Ещё можно попросить модель пересказать текст. Например, можно взять несколько отзывов с маркетплейса и попросить модель выделить плюсы и минусы товара.

Другое интересное применение — это генерация кода. Например, можно описать сигнатуру функции и её документацию, а LM сама допишет тело. Можно даже с помощью LM решать международные математические олимпиады на уровне серебряного призрака. Быть...

Обсуждение LM без упоминания ассистентов. Кто ещё не слышал про ChatGPT? Если вы проспали и это, то вкратце: это бот, которому можно задать вопрос на любую тему, и он постарается на него ответить. Можно спросить, как оформить юридический документ. Можно спросить вопрос по истории, по этимологии слова. Только, пожалуйста, не просите их складывать числа, с этим пока очень плохо. Проверка правильности ответа всё ещё лежит на пользователе. LM умеет очень искренне и убедительно говорить неправду.

А как вообще из LM получается ассистент? Можно ли это сделать дома и гонять потом его на персональном компьютере под столом? Давайте разбираться. Хорошая новость заключается в том, что идея на обучение собственного ассистента не очень сложна. Для этого нам понадобится модель, данные и железо, чтобы его обучить.

Начнём с моделей. В наши дни уже доступно множество LLM по API, например, закрытых коммерческих от OpenAI, Google и Anthropic. Цены на них совсем не кусачие: от нескольких десятков центов до долларов за миллион токенов. А это, между прочим, объём "Войны и мира". Более того, у многих моделей есть mini или Lite версии, которые выдают качество похуже, однако гораздо дешевле.

Сильно развито и Open Source сообщество. Различные Open Source модели постоянно дообучаются на различных корпусах и выкладываются на сайт Hugging Face, откуда с помощью библиотеки Transformers можно удобно, в несколько строчек кода, скачать нужную модель и начать ей пользоваться. Все современные модели по типу Llama 3 уже залиты в этот репозиторий. Они представлены в разных размерах: 8 миллиардов, 70 миллиардов и даже огромная четырёхсот миллиардная модель. Для сравнения, оригинальная GPT-3 имела в себе 175 миллиардов параметров и обучалась на огромном кластере.

Разнообразие моделей на семействе Llama не заканчивается. Есть интересные модели по типу Mistral, основанный на архитектуре "смеси экспертов". Данная модель Mistral содержит в себе 47 миллиардов параметров. Однако, за счёт архитектуры "смеси экспертов", она работает гораздо быстрее, чем другие модели подобного объёма и тоже даёт хорошее качество.

Дальше нам нужен датасет качественных инструкций. Инструкция — это текст, который описывает какую-либо задачу или задаёт вопрос, и ответ. Ответ должен быть качественный, развёрнутый и тот, который вы хотели бы увидеть на данный вопрос. Из-за того, что языковые модели, за счёт обучения на огромных корпусах данных, уже имеют определённые знания о нашем мире, подобное дообучение позволяет им эффективно использовать эти знания для генерации правильных ответов.

После такого дообучения возможности значительно расширяются. Например, можно подать модели какой-нибудь учебник, который рассказывает о том, как перейти с одного языка на другой, при этом сам этот язык модель видела или очень мало, или не видела вовсе. И по набору правил, описанных в учебнике, модель будет выдавать не самый лучший, но перевод.

После этого всё просто: мы снимаем небольшой кластер и запускаем обучение. Но что делать, если у вас нет собственного кластера и вы не хотите работать с кодом? Ничего страшного. Уже Hugging Face позволяет драг-н-дропом загрузить датасет и запустить обучение. Более того, все они предоставляют возможности по сжатию моделей. Например, восьмибитную Llama можно вместить всего на 24 Гб видеопамяти, а это уже RTX 4090 из пользовательского сегмента цен. Если амбиции ещё больше, можно взять семидесятимиллиардную модель, которая влезает на 48 Гб видеопамяти. Обучение, конечно, будет долгим, однако его можно сделать.

После этого ассистент обучен и можно тестировать его. Однако, если на первом шаге выбора модели вы задумались: "Почему бы нам не взять уже готовую?", то вы задумались не зря. В том же репозитории Hugging Face уже лежит множество готовых моделей-ассистентов, с которыми можно брать и начинать общаться.

Наступает момент истины. Модель или скачана, или обучена. Как с ней общаться? Запустить её можно всё той же библиотекой Transformers из Hugging Face. Для этого желательно видеокарта. Но если у вас всего лишь обычный ноутбук, ничего страшного. Запустить модели можно и на процессоре. Отсутствие GPU для моделей от 7 до 20 миллиардов параметров уже давно не является преградой. Проект от болгарского разработчика Георгия Гергана, Llama.cpp, за счёт эффективной имплементации на C++ и выжимания всех возможностей современных процессоров, позволяет запускать модели на обычном процессоре с приемлемой скоростью. Например, тринадцатимиллиардная Llama 2 будет выдавать 16 токенов в секунду, чего с головой хватит для личного пользования.

А что же такое квантизация и сжатие моделей? Вкратце: обычно параметры модели занимают 2 байта. Однако это довольно много для огромных моделей, поэтому их пытаются ужа́ть в один байт и даже в несколько бит, чтобы вместить на процессоры. Более того, с такими небольшими типами данных процессор работает быстрее. Однако стоит отметить, что все техники сжатия влекут за собой некоторую потерю качества модели.

Можно мне паузу? Мне надо мысль тяжёлую сформулировать. Не стоит. И техники инференса, например, те же квантованные модели, на инференсе будут занимать намного меньше места, чем на обучении. Однако, как я уже сказал, это пойдёт в ущерб качества модели. А вот техники гру́з весов моделей позволяют возместить потерю в качестве за счёт потери в скорости. Ту же семидесятимиллиардную модель можно уместить всего в 4 Гб видеопамяти. Однако большая часть времени уйдёт не на полезные вычисления, а на гру́з по всему миру бьются над тем, чтобы сжать модели всё сильнее и не терять качество. Модель даже готова ужа́ться до полутора бит на параметр, чтобы работать у вас.

Таким образом, своего личного ассистента можно держать абсолютно локально. Однако, если греться от ноутбука вы не планируете и спокойно относитесь к тому, чтобы послать свои данные на чужие сервера, вы можете воспользоваться провайдерами LLM, такими как OpenRouter, Fireworks, Together AI и другие. Они предоставят удобные API, в котором можно спокойно послать свои запросы почти в любые Open Source LLM.

Если же вы не хотите посылать свои данные в сторонние сервисы и у вас есть требования к большой нагрузке, вам придётся раскошелиться на видеокарты и использовать особые фреймворки для инференса, такие как Text Generation Inference, vLLM, TGI и другие. Эти фреймворки постоянно выпускают новые оптимизации инференса с учётом современных архитектур GPU и заимствуют друг у друга. Но выведение... Поэтому выбрать можно любой понравившийся.

Мы много хвалим модели, рассказываем об их доступности. А есть ли минусы? Конечно, есть. Модели они как люди, каждый со своим характером. Одна отвечает длинно, другая коротко, одна грубо, другая нежно. Как можно повлиять на то, как отвечает модель? На помощь приходит промт. Это и есть часть описания инструкции, которая подсказывает модели, каким образом построить свой ответ. Подбор промта — задача, хоть многие относятся к ней пренебрежительно, подобрать правильный промт порой бывает очень сложно, но он при этом может давать заметный буст.

Техники бывают довольно разные: от несерьёзных, например, предложить модели денежное вознаграждение за хороший ответ, до довольно сложных, таких как Chain of Thought, где модель просит порассуждать несколько шагов диалога перед тем, как дать финальный ответ. И это действительно даёт буст и используется на проде.

Другая проблема заключается в том, что модели ограничены теми знаниями, которые были у неё в обучающем корпусе, и эти знания всегда ограничены по времени. Ответ LM о том, какой сейчас самый последний iPhone, будет одинаковым сейчас и даже через год. Как решить эту проблему? На помощь приходит RAG. Какое слово ужасное! На помощь приходит RAG. Retrieval-Augmented Generation. Эта техника заключается в том, что мы берём какую-то коллекцию документов, сжимаем их энкодером, например, BERT, и кладём в особую векторную базу данных. После этого запрос пользователя тоже векторизуется, и к нему ищется самые релевантные тексты. Эти тексты подклеиваются... дать она не может. Стараться эта машина нельзя. Она может использовать данные тексты, чтобы дать более правдивый и точный ответ.

Например, популярное применение — это общение с PDF. Если вас завалило бюрократией или вам просто одиноко, можно пообщаться с коллекцией своих PDF-документов, спросить, какой у вас баланс по счетам, что вам принадлежит и кому вы должны денег. RAG-система как выдаст и ответ своими словами, так и сможет подсветить вам нужные параграфы текстов, где содержалась релевантная информация.

Другой способ обогатить модель знаниями или улучшить качество на своих задачах — это fine-tuning. Модели можно и даже нужно дообучать, несмотря на их пугающие размеры. Можно обучать как всю модель. Для этого нам скорее всего потребуется небольшой кластер от восьми до десятков, а может быть, даже и сотен видеокарт. Или же можно обучать легковесные добавки-адаптеры. Например, адаптеры — это тюнинг, то есть LoRA, которые подаются на вход вместе с энкодинг-токенов и по сути заменяют подобранную инструкцию. Или LoRA — это модификация линейных слоёв, которые позволяют за счёт небольших матриц изменить поведение модели. Существуют и продвинутые техники дообучения, такие как Reinforcement Learning from Human Feedback, или обучение на предпочтениях. Для подобного обучения не нужны пары текстов "инструкция-ответ", а нужны пары ответов к одной инструкции, один из которых размечен лучше другого. Подобные данные можно собирать на взаимодействии с пользователем, например, давать ему два ответа и просить выбрать, какой из них лучше. Таким образом, мы можем дообучать модель в ходе её жизненного цикла на взаимодействиях с юзером.

Всё это время мы говорим про обучение моделей, про их использование, но мы так и не подняли тему того, как выбрать модель, как вообще понять, насколько модель хороша, и как сделать выбор осознанно. Всё, я скоро вас отпущу. Простите. На помощь приходят бенчмарки. Они бывают разные, например, задачи классификации, саморезы, по которым вполне себе понятные оффлайн-метрики. Это классические дискриминантные задачи. Но как оценить модель на задаче ассистента? Как вообще можно оценить ответ на открытый вопрос?

Можно попросить разметчика давать оценку от одного до десяти. Однако это не очень эффективно, потому что человек плохо работает в абсолютных шкалах. Гораздо лучше люди справляются с попарными сравнениями. Можно давать два ответа на один и тот же вопрос, и тогда человек запросто выберет тот, который из них является предпочтительным, или скажет, что они одинаковые. Именно по такому принципу работают LLM-арены, и выглядят они следующим образом: вы пишете какую-либо инструкцию или вопрос, после чего две анонимные модели выдают вам ответ, и вам нужно сказать: "Лучше первая, вторая или ответы одинаковые". На таких попарных сравнениях строится система рейтинга, которая выливается в лидерборд моделей. Самая популярная арена на данный момент — это LMSYS Chatbot Arena, и первые 20 строчек на ней заполнены закрытыми коммерческими решениями, после чего уже начинается Open Source, который отстаёт где-то на 100 очков рейтинга.

Выбрать модель для своей задачи можно исходя из разных критериев. Можно смотреть на соотношение цена-качество. Можно смотреть на оффлайн-бенчмарки, если ваша задача похожа на нечто, на чём модель замеряли, например, математика, программирование или классификация текстов. Но рекомендуется попробовать модель на паре своих примеров и посмотреть на то, как она будет себя вести. Если ваша задача была в обучающей выборке, велик шанс получить хорошее качество из коробки без лишних усилий.

Время ролика подходит к концу, а значит, пора закругляться. Если вы хотите научиться работать с LLM, файн-тюнить их, строить RAG-системы, обучать агентов и ускорять инференс, при этом понимать, как всё это работает под капотом, записывайтесь на наш курс. Он так и называется: "Large Language Models". Ссылка в описании. А на этом у меня всё, и мы прощаемся до новых встреч. Нет, я забыл продаться за лайки.

А на этом наше видео подходит к концу. Задавайте вопросы в комментариях, если вам что-то было непонятно или вы хотите что-то узнать. Подписывайтесь на канал и ставьте лайк, если вам понравилось это видео. Иначе не ставьте. Хотя, в целом, до новых встреч. Всё. Стоп.