Практическое оперативное проектирование для небольших компаний LLM

Эффективность большой языковой модели во многом зависит от инструкций, которые мы ей даем. Разработка подсказок — это процесс формулирования вопросов таким образом, чтобы получить наилучший результат от большой языковой модели. Это важнейший шаг в реализации функции, основанной на большой языковой модели.

Разработка подсказок — это итеративный процесс. Если вы экспериментировали с различными программами магистратуры, вы, вероятно, заметили, что вам нужно было корректировать подсказку, чтобы добиться лучшего результата.

Это справедливо и для моделей разных размеров.

Чат-интерфейсы, работающие на основе крупных LLM-систем, таких как Gemini или ChatGPT, часто позволяют получать удовлетворительные результаты с минимальными усилиями по настройке. Однако при работе с базовой, небольшой LLM-системой, которая не оптимизирована, необходимо адаптировать свой подход.

Меньшие по размеру магистерские программы обладают меньшей мощностью и располагают меньшим объемом информации для использования.

Что мы подразумеваем под "меньшими программами магистратуры"?

Определение размеров LLM — сложная задача, и производители не всегда указывают эти размеры.

В этом документе под «меньшими LLM» понимается любая модель с количеством параметров менее 30 миллиардов. На сегодняшний день модели с несколькими миллионами или миллиардами параметров вполне реально запускать в браузере на устройствах потребительского класса.

Где используются более мелкие LLM-программы?

  • Генеративный ИИ на устройстве/в браузере , например, при использовании Gemma 2B с API вывода LLM от MediaPipe (подходит даже для устройств только с процессором) или DistilBert в браузере с Transformers.js . Загрузка модели и выполнение вывода на устройстве пользователя возможны только с этими небольшими LLM, чтобы обеспечить разумные объемы загрузки из интернета и соответствовать ограничениям памяти устройства и графического/процессорного процессора.
  • Создание собственного серверного генеративного ИИ . Доступны небольшие модели с открытыми весами, такие как Gemma 2B, Gemma 7B или Gemma 27B, которые вы можете запустить на собственном сервере (и, при желании, доработать).

Начать

Чат-интерфейсы, работающие на основе крупных LLM-систем, таких как Gemini или ChatGPT, часто позволяют получать удовлетворительные результаты с минимальными усилиями. Однако при работе с меньшими LLM-системами необходимо адаптировать свой подход. Меньшие LLM-системы менее мощные и имеют меньший объем информации для использования.

Предоставьте контекст и точные инструкции по формату.

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

Например:

Based on a user review, provide a product rating as an integer between 1 and 5. \n
Only output the integer.

Review: "${review}"
Rating:
Ввод (обзор) Выходной сигнал (рейтинг)
Более крупный LLM (Близнецы 1.5) Меньший LLM (Джемма 2B)
Мне очень нравится, как сидят! Хорошо распределяют вес и удивительно удобны даже в многочасовых походах. Рекомендую. 5 4 из 5 звезд**
Ремешки хлипкие, и под тяжелыми грузами они начали врезаться мне в плечи. 1 2/5

Хотя Gemini 1.5 выдает желаемый результат с помощью этой простой команды, результат, полученный от Gemma, неудовлетворительный:

  • Формат неверный. Для оценки запрашивалось целое число.
  • Рейтинг, похоже, не совсем точен. Первый отзыв достаточно восторженный, чтобы поставить 5 звезд.

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

Например:

`Analyze a product review, and then based on your analysis give me the
corresponding rating (integer). The rating should be an integer between 1 and
5. 1 is the worst rating, and 5 is the best rating. A strongly dissatisfied
review that only mentions issues should have a rating of 1 (worst). A strongly
satisfied review that only mentions positives and upsides should have a rating
of 5 (best). Be opinionated. Use the full range of possible ratings (1 to
5). \n\n
    \n\n
    Here are some examples of reviews and their corresponding analyses and
    ratings:
    \n\n
    Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor
    use, but it's perfect for urban exploring.'
    Analysis: The reviewer appreciates the product's style and basic
    functionality. They express some uncertainty about its ruggedness but
    overall find it suitable for their intended use, resulting in a positive,
    but not top-tier rating.
    Rating (integer): 4
    \n\n
    Review: 'It's a solid backpack at a decent price. Does the job, but nothing
    particularly amazing about it.'
    Analysis: This reflects an average opinion. The backpack is functional and
    fulfills its essential purpose. However, the reviewer finds it unremarkable
    and lacking any standout features deserving of higher praise.
    Rating (integer): 3
    \n\n
    Review: 'The waist belt broke on my first trip! Customer service was unresponsive too. Would not recommend.'
    Analysis: A serious product defect and poor customer service experience naturally warrants the lowest possible rating. The reviewer is extremely unsatisfied with both the product and the company.
    Rating (integer): 1
    \n\n
    Review: 'Love how many pockets and compartments it has. Keeps everything organized on long trips. Durable too!'
    Analysis: The enthusiastic review highlights specific features the user loves (organization and durability), indicating great satisfaction with the product. This justifies the highest rating.
    Rating (integer): 5
    \n\n
    Review: 'The straps are a bit flimsy, and they started digging into my shoulders under heavy loads.'
    Analysis: While not a totally negative review, a significant comfort issue leads the reviewer to rate the product poorly. The straps are a key component of a backpack, and their failure to perform well under load is a major flaw.
    Rating (integer): 1
    \n\n
    Now, here is the review you need to assess:
    \n
    Review: "${review}" \n`;
Ввод (обзор) Вывод с меньшим значением LLM (Gemma 2B)

Мне очень нравится, как сидят! Хорошо распределяют вес и удивительно удобны даже в многочасовых походах. Рекомендую.

Анализ: Этот отзыв носит исключительно положительный характер и подчеркивает удобство и комфорт изделия, что свидетельствует о высокой степени удовлетворенности продуктом. Это оправдывает высокую оценку.

Рейтинг (целое число): 5

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

**Анализ:** В обзоре отмечается существенная проблема с комфортом ремней. Также предполагается, что изделие может не подходить для перевозки тяжелых грузов или длительных походов.

**Рейтинг:** 1 (худший)

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

Ожидается ручной анализ выходных данных.

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

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

// Use try/catch to catch (parsing) errors
try {
  // Parse the output for a rating
  const int = /[1-5]/;
  const ratingAsString = llmOutput.match(int)[0];
  // Parse as int
  const ratingAsInt = parseInt(ratingAsString);
  // `checkRating` checks the rating is a number between 1 and 5, since the
  // regEx may catch a number like "100"
  const finalRating = checkRating(ratingAsInt);
} catch (e) {
  console.error('Error', e);
}

Различия в API Mind

Облачные API для LLM, такие как Gemini API или OpenAI, которые обычно являются точкой входа в более крупные LLM, предлагают удобные функции подсказок. Например, Gemini 1.5 Pro предлагает системные инструкции и режим JSON .

В настоящий момент эти функции не всегда доступны для использования пользовательских моделей или для небольших LLM-моделей, доступ к которым осуществляется с помощью встроенных в браузер API искусственного интеллекта, таких как MediaPipe LLM Inference API или Transformers.js . Хотя это не обязательно является техническим ограничением, встроенные в браузер API искусственного интеллекта, как правило, более компактны.

Ограничения на количество жетонов разума

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

Кроме того, у более компактных моделей, как правило, меньшее ограничение на количество вводимых токенов. Например, у Gemini 1.5 Pro ограничение составляет 1 миллион вводимых токенов, в то время как у моделей Gemma контекстное окно имеет размер 8K .

Используйте функции подсчета токенов , чтобы избежать превышения лимита.

Скорректируйте свои расчетные временные рамки.

Учитывайте необходимость оперативного проектирования и тестирования при составлении смет времени на инженерные работы.

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

Оперативное проектирование против тонкой настройки?

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

Используйте точную настройку в следующих случаях:

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