![]() | Это неофициальный репозиторий для книги: Модели с большими языками: применить и реализовать стратегии для крупных языковых моделей (Appress). Книга основана на содержании этого хранилища, но ноутбуки обновляются, и я включаю новые примеры и главы. Если вы ищете официальный репозиторий для книги, с оригинальными ноутбуками, вам следует посетить репозиторий Appress, где вы можете найти все записные книжки в их первоначальном формате, как они появляются в книге. Купите его по адресу: [Amazon] [Springer] |
Обратите внимание, что курс на GitHub не содержит всю информацию, которая находится в книге.
Это практическое бесплатное вручия в отношении больших языковых моделей и их применений в постоянном развитии ??. Я буду публиковать различные уроки и образцы, когда я их завершу.
Курс обеспечивает практический опыт, используя модели от OpenAI и библиотеки объятий. Мы увидим и будем использовать много инструментов и практиковать небольшие проекты, которые будут расти, поскольку мы сможем применять новые знания.
Некоторые из тем и технологий, представленных в этом разделе, включают в себя: чат -боты, генерация кода, API OpenAI, обнимающееся лицо, векторные базы данных, Langchain, тонкая настройка, тонкая настройка PEFT, мягкая настройка, LORA, Qlora, оценка моделей, дистилляции знаний.
Каждый урок соответствует ноутбукам и статьям. Записные книжки содержат достаточную информацию для понимания кода внутри них, статья содержит более подробные объяснения о коде и охватываемой теме.
Мой совет - открыть статью вместе с ноутбуком и следовать. Многие из статей предлагают небольшие советы по вариациям, которые вы можете представить в ноутбуках. Я рекомендую следить за ними, чтобы повысить ясность концепций.
Большинство ноутбуков размещены на Colab, а некоторые - на Kaggle. Kaggle предоставляет больше памяти в бесплатной версии по сравнению с Colab, но я считаю, что копирование и обмен ноутбуками проще в Colab, и не у всех есть учетная запись Kaggle.
Некоторые из ноутбуков требуют большей памяти, чем предоставляет бесплатная версия Colab. Поскольку мы работаем с большими языковыми моделями, это общая ситуация, которая будет повторяться, если вы продолжите работать с ними. Вы можете запустить ноутбуки в своей собственной среде или выбрать профессиональную версию Colab.
Каждая ноутбука поддерживается со средней статьей, в которой код подробно объясняется.
В этом первом разделе курса мы научимся работать с API OpenAI, создав два небольших проекта. Мы углубимся в роли Openai и как предоставить необходимые инструкции для модели через подсказку, чтобы заставить ее вести себя так, как мы желаем.
Первый проект - это ресторанный чат -бот, где модель будет принимать заказы клиентов. Опираясь на этот проект, мы построим генератор операторов SQL. Здесь мы попытаемся создать безопасную подсказку, которая принимает только команды создания SQL и ничего больше.
Мы будем использовать OpenAI GPT-3.5 и панель для разработки простого чат-бота, адаптированного для ресторана быстрого питания. В течение курса мы рассмотрим основы быстрой инженерии, включая понимание различных ролей OpenAI, манипулирование настройками температуры и как избежать быстрых инъекций.
| Панель статьи / статья Gradio | Панель ноутбука / ноутбук Gradio |
|---|
Следуя той же структуре, используемой в предыдущей статье для создания чат -бота, мы внесли несколько модификаций для разработки естественного языка для переводчика SQL. В этом случае модель должна быть предоставлена со структурами таблицы, и были внесены корректировки в подсказку, чтобы обеспечить плавную функциональность и избежать любых потенциальных неисправностей. С этими модификациями, переводчик способен преобразовать запросы естественного языка в запросы SQL. @fmquaglia создала ноутбук с использованием DBML для описания таблиц, которые, безусловно, являются лучшим подходом, чем оригинал.
| Статья / Статья Грейо | Записная книжка / ноутбука Gradio / Notebook DBML |
|---|
Мы рассмотрим быстрые техники инженерных технологий, чтобы улучшить результаты, которые мы получаем из моделей. Например, как отформатировать ответ и получить структурированный ответ, используя несколько образцов выстрела.
| Статья | Блокнот |
|---|
Краткое введение в векторные базы данных, технология, которая будет сопровождать нас во многих уроках на протяжении всего курса. Мы будем работать над примером извлечения дополненного поколения, используя информацию из различных наборов данных новостей, хранящихся в ChromADB.
Если в мире крупных языковых моделей есть один аспект, он изучает, как использовать собственную информацию с ними. На этом уроке мы исследуем возможное решение, которое включает в себя хранение информации в векторной базе данных, ChromADB в нашем случае и использует ее для создания обогащенных подсказок.
| Статья | Блокнот |
|---|
Мы улучшили систему RAG, внедрив семантический слой кэша, способный определить, был ли аналогичный вопрос. Если утвердительно, он получает информацию из кэш -системы, созданной с FAISS, вместо того, чтобы получить доступ к векторной базе данных.
Вдохновение и базовый код семантического кеша, присутствующего в этом ноутбуке, существуют благодаря курсу: https://maven.com/boring-bot/advanced-llm/1/home от Hamza Farooq.
| Статья | Блокнот |
|---|---|
| Пари | Блокнот |
Лангчейн был одной из библиотек во вселенной крупных языковых моделей, которая внесла наибольшую вклад в эту революцию. Это позволяет нам цепорить звонки к моделям и другим системам, позволяя нам создавать приложения на основе крупных языковых моделей. В курсе мы будем использовать его несколько раз, создавая все более сложные проекты.
На этом уроке мы использовали Langchain для улучшения ноутбука из предыдущего урока, где мы использовали данные из двух наборов данных для создания обогащенной подсказки. На этот раз, с помощью Langchain, мы создали конвейер, который отвечает за извлечение данных из векторной базы данных и передачи его в языковую модель. Ноутбук настроен на работу с двумя разными наборами данных и двумя разными моделями. Одна из моделей обучена генерации текста, в то время как другая обучена генерации Text2 Text.
| Статья | Блокнот |
|---|
Мы создадим систему отклика комментариев, используя двухмодель, построенный с Langchain. В этой настройке вторая модель будет нести ответственность за смягчение ответов, сгенерированных первой моделью.
Одним из эффективных способов предотвращения создания нашей системы нежелательных ответов является использование второй модели, которая не имеет прямого взаимодействия с пользователями для обработки генерации ответов.
Этот подход может снизить риск нежелательных ответов, генерируемых первой моделью в ответ на запись пользователя.
Я создам отдельные записные книжки для этой задачи. Один будет включать в себя модели от OpenAI, а другие будут использовать модели с открытым исходным кодом, предоставляемые обнимающими лицом. Результаты, полученные в трех ноутбуках, очень разные. Система работает намного лучше с моделями OpenAI и Llama2.
| Статья | Блокнот |
|---|---|
| Openai статья | Openai Notebook |
| Llama2-7B Статья | Llama2-7B Notebook |
| Нет статьи | GPT-J Notebook |
Агенты являются одним из самых мощных инструментов в мире крупных языковых моделей. Агент способен интерпретировать запрос пользователя и использовать инструменты и библиотеки в своем распоряжении, пока не достигнет ожидаемого результата.
С агентами Langchain мы собираемся создать всего в нескольких строках одного из самых простых, но невероятно мощных агентов. Агент будет действовать в качестве помощника аналитика данных и поможет нам в анализе данных, содержащихся в любом файле Excel. Он сможет идентифицировать тенденции, использовать модели, делать прогнозы. Таким образом, мы собираемся создать простого агента, которого мы можем использовать в нашей ежедневной работе для анализа наших данных.
| Статья | Блокнот |
|---|
В этом примере комбинируются две технологии, наблюдаемые ранее: агенты и векторные базы данных. Медицинская информация хранится в ChromADB, и создается агент Langchain, который принесет ее только при необходимости для создания обогащенной подсказки, которая будет отправлена в модель, чтобы ответить на вопрос пользователя.
Другими словами, создается тряпичная система, чтобы помочь медицинскому чату.
Внимание!!! Используйте его только в качестве примера. Никто не должен принимать рекомендации загрузки как рекомендации настоящего доктора. Я отказываюсь от всей ответственности за использование, которое может быть предоставлено чат -боту. Я построил его только в качестве примера различных технологий.
| Статья | Блокнот |
|---|
Метрики, используемые для измерения производительности крупных языковых моделей, сильно отличаются от тех, которые мы использовали в более традиционных моделях. Мы переходим от таких показателей, как точность, счет F1 или отзыв, и движемся к таким показателям, как Bleu, Rouge или Meteor.
Эти метрики адаптированы к конкретной задаче, назначенной языковой модели.
В этом разделе мы рассмотрим примеры нескольких из этих метрик и того, как использовать их, чтобы определить, превосходит ли одна модель другой для данной задачи. Мы углубимся в практические сценарии, где эти показатели помогают нам принимать обоснованные решения о производительности различных моделей.
Bleu - один из первых показателей, стабированных для оценки качества переводов. В записной книжке мы сравниваем качество перевода, сделанного Google, с другими из модели с открытым исходным кодом от обнимающего лица.
| Статья WIP | Блокнот |
|---|
Мы рассмотрим использование метрики Rouge для измерения качества резюме, полученных языковой моделью. Мы собираемся использовать две модели T5, одна из которых является моделью T5-базой, а другая-тонкая настраиваемая база T5, специально разработанная для создания резюме.
| Статья | Блокнот |
|---|
В этом первоначальном примере вы можете наблюдать, как использовать Langsmith для контроля трафика между различными компонентами, которые составляют агент. Агент - это тряпичная система, которая использует векторную базу данных для построения обогащенной подсказки и передачи ее в модель. Лангсмит отражает как использование инструментов агента, так и решений, принятых моделью, всегда предоставляя информацию о отправленных/полученных данных, потребляемых токенах, продолжительности запроса и все это в действительно удобной среде.
| Статья | Блокнот |
|---|
Ранее в записной книжке, Руж Метрики: оценка резюме, мы узнали, как использовать Rouge, чтобы оценить, какое резюме лучше всего приблизительно приблизительно создано человеком. На этот раз мы будем использовать расстояние встраивания и Лэнгсмит, чтобы проверить, какая модель дает резюме более похожи на эталонные.
| Статья | Блокнот |
|---|
Мы принимаем агента, который функционирует в качестве медицинского помощника и включим Гискарда, чтобы оценить, правильные ли его ответы. Таким образом, оценивается не только ответ модели, но и поиск информации в векторной базе данных. Giskard - это решение, которое позволяет оценить полное раствор для тряпки.
| Статья | Блокнот |
|---|
Библиотека LM-Eval от Eleutherai предоставляет легкий доступ к академическим контрольным показателям, которые стали отраслевыми стандартами. Он поддерживает оценку как моделей с открытым исходным кодом, так и API от поставщиков, таких как OpenAI, и даже позволяет оценить адаптеры, созданные с использованием таких методов, как LORA.
В этой записной книжке я сосредоточусь на небольшой, но важной особенности библиотеки: оценка моделей, совместимых с библиотекой Transformers Hugging Face.
| Статья - WIP | Блокнот |
|---|
В разделе «Создание и оптимизацию» мы рассмотрим различные методы, такие как быстрое настройка или LORA, и мы будем использовать библиотеку PEFT Hearging Face для эффективной настройки больших языковых моделей. Мы рассмотрим такие методы, как квантование, чтобы уменьшить вес моделей.
В этой ноутбуке две модели обучаются с использованием быстрого настройки из библиотеки PEFT. Этот метод не только позволяет нам тренироваться, изменяя веса очень мало параметров, но также позволяет нам иметь различные специализированные модели, загруженные в память, которые используют ту же основополагающую модель.
Настройка быстрого настройки является аддитивной техникой, а веса предварительно обученной модели не изменяются. Веса, которые мы модифицируем в этом случае, - это виртуальные токены, которые мы добавляем в подсказку.
| Статья | Блокнот |
|---|
После краткого объяснения того, как работает техника тонкой настройки LORA, мы настраиваем модель из семейства Блум, чтобы научить ее создавать подсказки, которые можно использовать для обучения крупных языковых моделей.
| Статья | Блокнот |
|---|
Мы увидим краткое введение в квантование, используемое для уменьшения размера больших крупных языковых моделей. При квантовании вы можете загрузить большие модели, уменьшая необходимые ресурсы памяти. Это также относится к процессу тонкой настройки, вы можете точно настроить модель в одном графическом процессоре, не потребляя все ресурсы. После краткого объяснения мы видим пример о том, как можно точно настроить модель Bloom 7B INA A T4 16GB GPU на Google Colab.
| Статья | Блокнот |
|---|
Этот раздел все еще находится в стадии строительства. Цель состоит в том, чтобы создать учебную программу, которая приведет нас из самых простых методов обрезки к созданию модели, используя те же методы, используемые ведущими компаниями в этой области, такие как Microsoft, Google, Nvidia или Openai, для создания своих моделей.
В первой ноутбуке процесс обрезки будет применен к кормовым слоям модели Divilgpt2. Это означает, что модель будет иметь уменьшенные веса в этих конкретных слоях. Нейроны для обрезки выбираются на основе их оценки важности, которые мы вычисляем, используя норму L1 их веса. Это простой поход, для этого первого примера, который можно использовать, когда вы хотите создать обрезку, которая имитирует базовую модель во всех областях.
Изменив структуру модели, должен быть создан новый файл конфигурации, чтобы убедиться, что она работает правильно с библиотекой transformers .
| Записная книжка: Обрезка модели Distilgpt2. |
|---|
В этой первой ноутбуке мы пытаемся повторить процесс обрезки, используемый с моделью Distilgpt2, но применяется к модели Llama. Не принимая во внимание характеристики модели, процесс обрезки приводит к совершенно непригодной модели. Эта записная книжка служит упражнением, чтобы понять, насколько важно знать структуру моделей, которые будут подвергаться обрезке.
| Записная книжка: Обрезка модели Llama3.2 неверный подход. |
|---|
Во втором ноутбуке решаются проблемы, возникающие при применении того же процесса обрезки к модели Llama, что и для Distilgpt2.
Правильный подход состоит в том, чтобы рассматривать слои MLP модели как пары, а не отдельные слои и рассчитать важность нейрона, рассматривая оба слоя вместе. Кроме того, мы переключаемся на использование максимального абсолютного веса, чтобы решить, какие нейроны остаются в обрезанных слоях.
| Обрезка статьи Llama3 | Записная книжка: Обрезка модели LlaMa3.2 Правильный подход. |
|---|
В этой ноутбуке мы рассмотрим пример обрезки глубины, который включает в себя удаление целых слоев из модели. Первое, что следует отметить, это то, что удаление целых слоев из модели трансформатора обычно оказывает значительное влияние на производительность модели. Это гораздо более радикальное архитектурное изменение по сравнению с простым удалением нейронов из слоев MLP, как видно в предыдущем примере.
| Записная книжка: глубина обрезка модели ламы. |
|---|
В этом простом первоначальном проекте мы собираемся разработать генератор SQL от естественного языка. Мы начнем с создания подсказки для реализации двух решений: одно используя модели OpenAI, работающие на Azure, а другой с моделью с открытым исходным кодом от обнимающего лица.
| Статья | Блокнот |
|---|---|
| Создайте приглашение NL2SQL для OpenAI | Быстрое создание для OpenAI |
| Пари | Быстрое создание для defog/sqlcoder |
| Вывод Azure Configuration. | Использование точки вывода Azure |
В этом небольшом проекте мы создадим новую модель, выравнивающую Microsoft-Phi-3-Model с DPO, а затем опубликуем ее для обнимающего лица.
| Статья | Блокнот |
|---|---|
| Пари | Выровняется с DPO модель PHI3-3. |
В этом начальном решении мы разрабатываем архитектуру для системы NL2SQL, способной работать в большой базе данных. Система предназначена для использования с двумя или тремя различными моделями. На самом деле, мы используем три модели в примере.
Это архитектура, которая обеспечивает быстрый старт проекта, предоставляя услуги только для нескольких таблиц в базе данных, что позволяет нам добавлять больше таблиц в нашем темпе.
В этом решении мы исследуем преобразующую силу встроенных и крупных языковых моделей (LLMS) в оценке риска клиентов и рекомендации продукта в финансовой отрасли. Мы изменим формат, в котором мы храним информацию о клиентах, и, следовательно, мы также изменим, как эта информация движется в рамках систем, достигая важных преимуществ.
Пожалуйста, если вы найдете какие -либо проблемы, откройте проблему. Я сделаю все возможное, чтобы исправить это как можно скорее и отдать вам должное.
Если вы хотите внести вклад или предложить тему, пожалуйста, не стесняйтесь начать обсуждение. Я был бы рад получить любые мнения или советы.
Не стесняйтесь, поделитесь курсом в своих социальных сетях со своими друзьями. Связайтесь со мной в LinkedIn или Twitter и не стесняйтесь поделиться тем, что вы хотите, или задать любые вопросы, которые у вас могут возникнуть.
Дайте звезду ️ репозиторию. Это очень помогает мне и призывает меня продолжать добавлять уроки. Это хороший способ поддержать бесплатные курсы с открытым исходным кодом, как этот.
Том Кокми, христианский Федерманн, крупные языковые модели являются современными оценщиками качества перевода. Оценка LLM с LLMS.
Pere Martra, Введение в крупные языковые модели с OpenAI
React: синергирование рассуждений и действий в языковых моделях. Раздел Langchain & Agents. Образец медицинского помощника.
Мощность масштаба для параметров-настройки настройки. Секция тонкой настройки и оптимизации. Образец быстрого настройки.
LORA: Низкая адаптация крупных языковых моделей. Секция тонкой настройки и оптимизации. Лура тонкая настраиваемая образец.
Qlora: Эффективное создание квантовых LLMS. Секция тонкой настройки и оптимизации. Клорская тонкая настройка образа.
Как призвать LLM для текста в SQL: исследование в настройках с нулевым выстрелом, однодоменом и междоменом. Проект. Естественный язык для SQL.
Saurav Muralidharan, Sharath Turuvekere Sreenivas, Равирадж Джоши, Марцин Чохиски, Мостофа Патвари, Мохаммад Шоейби, Брайан Катанзаро, Ян Каутц, Павло Мольчанов, «Компактные языковые модели через позаботуйте и дистилляцию знаний», Arxiviv: 2407. 2024. Доступно по адресу: https://doi.org/10.48550/arxiv.2407.14679.