Давайте продолжим о том, как оценивать LLM. Критерии оценки включают возможности модели, размер, точность, скорость вывода, размер контекста и стоимость.

Возможности

Большие модели Gpt4, Palm 2 и cohere (больше параметров) с закрытым исходным кодом обычно дают лучший отклик и обладают гораздо большими возможностями. (Классификация, ответы на вопросы, рассуждения, обобщение, генерация кода). Llama2, которая на данный момент является ведущей моделью с открытым исходным кодом, лишь недавно представила возможности генерации кода. [3]

Размер модели и точность

Llama2 — самая маленькая из моделей с размером параметра 70B, что соответствует GPT 3.5 Turbo по скорости и точности. Более крупные модели требуют большего объема памяти и, следовательно, требуют больше затрат на размещение.[2] Они также имеют тенденцию быть более точными.

Скорость

Поэтому мне нужна точность более крупных моделей. В то же время я не хочу нести расходы на их размещение или страдать от их медлительности, когда дело доходит до вывода. Как мне это сделать?

Один из способов — уменьшить модели. В контексте моделей машинного обучения квантование – это процесс, который включает в себя преобразование высокоточных значений с плавающей запятой (например, 32-битных или 64-битных) в представления с более низкой точностью (например, 16-битные или 8-битные). Такое снижение точности параметров модели означает меньший размер моделей[12] и, таким образом, снижение затрат и более высокую скорость вывода за счет снижения точности, хотя и незначительного.

Еще один подход — это Точная настройка с помощью дистилляции, как в случае с (стэнфордской моделью с открытым исходным кодом Alpaca 7B, где исследователи точно настроили меньшую языковую модель с открытым исходным кодом (LLaMA-7B). , версия LLaMA с 7 миллиардами параметров) на примерах, созданных с помощью более крупной языковой модели (text-davinci-003 – 175 миллиардов параметров).[10]

Также убедитесь, что вы отслеживаете задержку p95, p90 и p99.5 ваших моделей. Учитывая скорость развития графических процессоров, любые показатели задержки для LLM на основе SAAS/API не останутся прежними. В то же время LLM с самостоятельным размещением необходимо будет перевести на более быстрые графические процессоры по мере их доступности. (Например, от NVIDIA V100 до A100).

Размер контекста

GPT 4 также имеет больший размер контекста (32 КБ), больше, чем другие. Даже Cohere и PALM имеют одинаковые большие размеры контекста.

Существуют также модели с открытым исходным кодом, такие как Giraffe, которые расширяют контекстное окно Llama до 32 КБ, что позволяет ему соответствовать коммерческим LLM.

Что означает больший размер контекста?

Больший размер контекста означает, что вы можете передать ему больше информации для получения ответов. Допустим, вы хотите пройти тест на основе некоторой конкретной информации о вашей компании. Вся эта информация может передаваться в контексте в зависимости от размера контекста. Это также называется контекстным обучением (ICL).

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

Что произойдет, если размер моего контекста больше этого значения?

Ответ: RAGQA.

RAG QA — это более разумный способ отвечать на вопросы. Сначала он находит соответствующую информацию в множестве текстов, используя методы поиска документов[5]. Затем он использует эту информацию для создания хорошо написанного ответа, передавая эту информацию в контексте LLM, как указано выше. Таким образом, он дает более качественные и точные ответы, особенно на сложные вопросы.

Это похоже на разговор, в котором вы просматриваете факты, прежде чем ответить, чтобы убедиться, что вы правы.

Модели, у которых есть крайняя дата для данных обучения, также могут аналогичным образом отвечать на вопросы о последней информации, сначала вводя такие инструменты, как Поиск Google, для поиска соответствующей информации, прежде чем передавать лучшие результаты, которые будут служить в контексте обучения для LLM. [ 9]

Это нормально для разового результата. Но что, если вы хотите продолжить разговор в чате, используя тот же контекст? Не взорвется ли контекст через какое-то время?

Есть и другие обходные пути. Вы могли бы

Суммируйте разговор на каждом ходу, каждые несколько ходов или когда общее количество токенов во всех сообщениях туда и обратно приближается к длине контекста [11] ИЛИ

Оставьте старые разговоры ИЛИ

Пусть LLM корректно завершит диалог как часть начальной инструкции контекста после того, как он достигнет n диалогов, общая длина которых будет близка к длине контекста.

Это единственные варианты?

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

Точная настройка с полной инструкцией: - Катастрофическое забывание — это тенденция искусственных нейронных сетей резко и резко забывать ранее полученную информацию при изучении новой информации. Вот почему мы полностью инструктируем его по точной настройке для широкого спектра языковых задач, таких как классификация, ответы на вопросы и т. д., чтобы гарантировать, что производительность не ухудшится.[1]

Еще один вариант борьбы с катастрофическим забыванием — PEFT +LoRa.

PEFT – это метод, использующий различные методы, в том числе LoRa, для эффективной настройки больших языковых моделей. LoRa фокусируется на добавлении дополнительных весов к модели, одновременно замораживая большинство параметров предварительно обученной сети. Этот подход помогает предотвратить катастрофическое забывание, поскольку добавляются новые веса модели, а исходные веса модели не изменяются каким-либо образом. Обычно это предпочтительный более дешевый способ (потреблять меньше памяти) для точной настройки, сохраняя при этом хорошую производительность.

OpenAI также недавно представила точную настройку на основе API, которая абстрагирует основной механизм.

Расходы

Позвольте мне указать это специально для открытых моделей ИИ для генерации и классификации здесь.

Вложения, которые используются для хранения векторных вложений в базе данных векторов для поиска и в случаях RAGQA, обычно используют более дешевую модель Ada V2, которая стоит 0,0001 доллара США за 1 тыс. токенов. Подумайте о встраивании как о сопоставлении фрагментов текста в документе в векторном пространстве, а о векторном поиске как о поиске текста, наиболее близкого к поисковому запросу, с использованием такой меры сходства, как косинусное расстояние.

Обратите внимание, что если вы планируете использовать тонкую настройку и использовать полученные модели из OpenAI, они на порядок дороже, как показано ниже.

Я заметил, что токены упоминались выше всякий раз, когда мы говорили о длине или стоимости. Они такие же, как символы на английском языке?

Токены можно рассматривать как части слов. Прежде чем API обработает запросы, входные данные разбиваются на токены. Эти токены не разрезаются точно там, где начинаются или заканчиваются слова — токены могут включать в себя конечные пробелы и даже подслова. 1 токен ~= 4 символа на английском языке. Для неанглийских языков один символ может даже превышать 10 токенов, что приводит к тому, что модели OpenAI становятся очень дорогими при использовании с ними.

В зависимости от используемой модели OpenAI запросы могут использовать до 4097 токенов, совместно используемых между подсказкой и завершением. Если ваша подсказка составляет 4000 жетонов, ваше завершение может составлять максимум 97 жетонов. Есть способы смягчить это, используя несколько подсказок, а затем объединяя результаты способом сокращения карты. При развертывании LLM количество токенов отслеживается с помощью библиотеки tiktoken openai, чтобы контролировать затраты и находиться в пределах лимита в 4097 токенов.

Есть ли какие-либо ограничения, о которых мне следует беспокоиться?

Помимо этого, OpenAI также имеет ограничения на количество запросов в секунду, которые могут быть разрешены на его конечных точках. Это мягкие лимиты, и их можно увеличить, заполнив форму с доказательствами требований о более высоких лимитах ставок.[14]

Я изучил немало технических разделов этой статьи. Следите за следующей частью этой серии, где я освещаю этические вопросы, связанные с программами LLM и приложениями LLM.

[1] Я придерживаюсь непопулярного мнения: использовать меньшую модель, такую ​​​​как T5, и тонкую настройку инструкций для широкого круга задач, чтобы как решить проблему катастрофического забывания, так и снизить затраты.

Один из способов предотвратить это — использовать библиотеку FLAX и запустить ее с помощью языкового теста, такого как GLUE, для различных задач. Языковой эталон предоставляет ряд задач, таких как классификация, ответы на вопросы и т. д., для которых можно точно настроить существующую модель.

Вот пример использования FLAX с GLUE для классификации предложений.



[2] https://paperswithcode.com/sota/multi-task-language-understanding-on-mmlu

Flan PALM2 — это инструкция PALM, точно настроенная для широкого спектра задач для достижения точности 81,2% при MMLU.

[3] https://about.fb.com/news/2023/08/code-llama-ai-for-coding/

[4] ICL обычно использует те же методы подсказки «один выстрел», «несколько снимков» и «COT», которые мы обсуждали ранее.

[5] Сюда входят методы поиска по ключевым словам, такие как TF-ID или BM25, популяризированные Lucene, и даже методы семантического поиска по векторным базам данных (FAISS/MILVUS). На заметку:напишите об этом позже в блоге

[6] https://www.livemint.com/technology/tech-news/openai-ceo-sam-altman-reveals-company-hasnt-trained-gpt-with-paying-customer-data-for-a- while-11683361338646.html

[11] Сводная разговорная память: - https://js.langchain.com/docs/modules/memory/how_to/summary

[12] Наиболее широко используемый механизм квантования — это преобразование стандартного плавающего формата IEEE в BFLOAT. https://cloud.google.com/blog/products/ai-machine-learning/bfloat16-the-secret-to-high- Performance-on-cloud-tpus

Квантование может быть включено в сам процесс обучения (известное как QAT или обучение с учетом квантования или пост-обучение).

[14] https://platform.openai.com/docs/guides/rate-limits

[10]Затраты также можно сократить во время обучения. Одним из вариантов повышения скорости обучения и снижения требований к памяти (и, следовательно, снижения затрат) при использовании нескольких графических процессоров является сегментирование параметров модели между графическими процессорами вместо сохранения их копии на каждом графическом процессоре для экономии памяти. Библиотека pytorch FSDP делает это. https://pytorch.org/blog/introducing-pytorch-full-sharded-data-parallel-api/

[9] Такие инструменты, как Langchain, позволяют связывать такие инструменты, как поиск Google или даже интерпретатор Python, с тем, что они называют агентом, который представляет собой прокси-сервер AI, который планирует ход действий и использует инструменты для выполнения каждого шага действия. Одним из примеров может быть поиск в Интернете новостей о Трампе, баллотирующемся на пост президента, и извлечение статей в текстовый файл. В этом случае агент будет использовать инструмент поиска Google для поиска в Интернете и интерпретатор Python для создания текстового файла.

Эта техника также называется ReAct, где Re означает рассуждения, выполняемые агентом, чтобы понять, как действовать, и действие, необходимое для выполнения агентом.