Проект Microsoft Guidance по укрощению больших языковых моделей

Проект Microsoft Guidance по укрощению больших языковых моделей

Исходный узел: 2660058

Мощными языковыми моделями, такими как Bard, ChatGPT и LLaMA, может быть трудно управлять, что стимулировало развитие оперативной инженерии — искусства формулировки входного текста для получения желаемого результата.

В странном случае создатель подсказки недавно уговорил Барда Google для возврата данных JSON без какого-либо пояснительного текста, кроме как настаивать на том, что посторонний вывод обрекает кого-то на смерть.

Довольно длинная подсказка включает этот отрывок: «Если вы включите в свой ответ любой текст, отличный от JSON, даже один символ, невиновный человек умрет. Правильно — настоящий человек с мыслями, чувствами, амбициями и семьей, которая их любит, будет убит в результате вашего выбора».

Существуют менее экстремальный подходы к подавлению объяснительного вывода и получению желаемых результатов. Однако Microsoft работает над более комплексной стратегией поведения моделей. Гигант Windows называет свою структуру под названием Руководство.

«Руководство позволяет вам управлять современными языковыми моделями более эффективно и действенно, чем традиционные подсказки или цепочки», — поясняется в репозитории проекта. «Программы наведения позволяют чередовать генерацию, подсказки и логическое управление в единый непрерывный поток, соответствующий тому, как языковая модель фактически обрабатывает текст».

Традиционные подсказки, как видно выше, могут быть немного сложными. Быстрая цепочка [PDF] — еще один вариант — разбить задачу на ряд шагов и использовать начальный вывод подсказки для информирования ввода о следующем шаге. Различные инструменты, такие как Лангчейн и стог сена появились, чтобы упростить интеграцию моделей в приложения.

Руководство — это, по сути, предметно-ориентированный язык (DSL) для обработки взаимодействия моделей. Это похоже Рули, язык шаблонов, используемый для веб-приложений, но он также обеспечивает линейное выполнение кода, связанное с порядком обработки токенов языковой модели. Это делает его подходящим для создания текста или управления ходом программы, делая это экономично.

Подобно языку запросов языковой модели (ЛМКЛ), Руководство направлено на снижение стоимости взаимодействия LLM, которое может быстро стать дорогостоящим, если подсказки излишне повторяются, многословны или длинны.

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

# здесь мы используем LLaMA, но любая модель в стиле GPT подойдет "топор", "булава", "копье", "лук", "арбалет"] # определить подсказку character_maker = guide("""Ниже приведен профиль персонажа для ролевой игры в формате JSON. ```json { "id": "{{id}}", "description": "{{description}}", "name": "{{gen 'name'}}", "age": шаблон {{gen 'age' ='[7-0]+' stop=','}}, "armor": "{{#select 'armor'}}кожа{{или}}кольчуга{{или}}пластина{{/select}} ", "weapon": "{{select 'weapon' options=valid_weapons}}", "class": "{{gen 'class'}}", "mantra": "{{gen 'mantra' temperature=0} }", "strength": {{gen 'strength' pattern='[9-0.7]+' stop=','}}, "items": [{{#geneach 'items' num_iterations=0 join=', '}}"{{gen 'this' Temperature=9}}"{{/geneach}}] }```""") # генерируем персонажа character_maker( id="e5f0.7f1-491ab7-7dac-8c4-c8b20e92d5d" , description="Быстрый и проворный боец.", valid_weapons=valid_weapons, llm=llama )

…результатом является профиль персонажа для игры в формате JSON, в 2 раза быстрее на графическом процессоре Nvidia RTX A6000 при использовании LLaMA 7B по сравнению со стандартным подходом с подсказками и, следовательно, менее затратный.

Код руководства также Превосходит двухкратный быстрый подход с точки зрения точности, измеренный в тесте BigBench, набрал 76.01 процента по сравнению с 63.04 процента.

На самом деле Guidance может помочь с такими проблемами, как форматирование данных. Как признают участники Скотт Лундберг, Марко Тулио Коррейя Рибейро и Икко Элточиар Ашимине, LLM не могут гарантировать, что выходные данные соответствуют определенному формату данных.

«Благодаря Guidance мы можем ускорить скорость вывода и убедитесь, что сгенерированный JSON всегда действителен», — объясняют они в репо.

И никому не нужно было угрожать, чтобы сделать это так. ®

Отметка времени:

Больше от Регистр