Простая в использовании платформа обработки инструкций для больших языковых моделей.
Проект • Бумага • Демо • Обзор • Установка • Краткое руководство • Как использовать • Документы • Видео • Цитирование • Авторы
Этот репозиторий является подпроектом KnowLM.
EasyInstruct — это пакет Python, который предлагается в качестве простой в использовании среды обработки инструкций для больших языковых моделей (LLM), таких как GPT-4, LLaMA, ChatGLM, в ваших исследовательских экспериментах. EasyInstruct модульно объединяет генерацию, выбор и подсказки инструкций, а также учитывает их комбинацию и взаимодействие.
В настоящее время поддерживаются следующие методы генерации инструкций:
Методы | Описание |
---|---|
Самообучение | Метод, который случайным образом выбирает несколько инструкций из пула начальных задач, аннотированных человеком, в качестве демонстрации и предлагает LLM сгенерировать больше инструкций и соответствующих пар ввода-вывода. |
Эвол-Инструкт | Метод, который постепенно обновляет исходный набор инструкций до более сложных инструкций, запрашивая LLM с конкретными подсказками. |
Обратный перевод | Метод, который создает инструкцию после экземпляра обучения путем прогнозирования инструкции, на которую будет правильно отвечать часть документа корпуса. |
KG2Инструкт | Метод, который создает инструкцию после экземпляра обучения путем прогнозирования инструкции, на которую будет правильно отвечать часть документа корпуса. |
Текущие поддерживаемые метрики выбора инструкций следующие:
Метрики | Обозначения | Описание |
---|---|---|
Длина | Ограниченная длина каждой пары инструкций и ответов. | |
Растерянность | Возведенная в степень средняя отрицательная логарифмическая вероятность ответа. | |
МТЛД | Мера текстового лексического разнообразия, средняя длина последовательных слов в тексте, который поддерживает минимальный пороговый показатель TTR. | |
РУЖА | Дублирование, ориентированное на припоминание, для Gisting Evaluation, набора показателей, используемых для оценки сходства между предложениями. | |
Оценка GPT | Оценка того, является ли вывод хорошим примером того, как AI Assistant должен реагировать на инструкции пользователя, предоставленная ChatGPT. | |
ЦИРС | Оценка с использованием абстрактного синтаксического дерева для кодирования структурных и логических атрибутов для измерения корреляции между кодом и способностями к рассуждению. |
Поставщики услуг API и соответствующие им продукты LLM, доступные в настоящее время:
Модель | Описание | Версия по умолчанию |
---|---|---|
ОпенАИ | ||
ГПТ-3,5 | Набор моделей, которые улучшают GPT-3 и могут понимать, а также генерировать естественный язык или код. | gpt-3.5-turbo |
ГПТ-4 | Набор моделей, которые улучшают GPT-3.5 и могут понимать, а также генерировать естественный язык или код. | gpt-4 |
антропный | ||
Клод | Помощник ИИ нового поколения, основанный на исследованиях Anthropic по обучению полезных, честных и безвредных систем ИИ. | claude-2.0 |
Клод-Инстант | Более легкий, менее дорогой и гораздо более быстрый вариант, чем Клод. | claude-instant-1.2 |
Согласовать | ||
Команда | Флагманская модель генерации текста Cohere, обученная следовать командам пользователя и мгновенно пригодная в практических бизнес-приложениях. | command |
Command-Light | Облегченная версия моделей Command, которая работает быстрее, но может создавать текст более низкого качества. | command-light |
Установка из ветки git repo:
pip install git+https://github.com/zjunlp/EasyInstruct@main
Установка для локальной разработки:
git clone https://github.com/zjunlp/EasyInstruct
cd EasyInstruct
pip install -e .
Установка с использованием PyPI (не последней версии):
pip install easyinstruct -i https://pypi.org/simple
Мы предоставляем пользователям два способа быстрого начала работы с EasyInstruct. Вы можете использовать сценарий оболочки или приложение Gradio в зависимости от ваших конкретных потребностей.
Пользователи могут легко настроить параметры EasyInstruct в файле в стиле YAML или просто быстро использовать параметры по умолчанию в предоставляемых нами файлах конфигурации. Ниже приведен пример файла конфигурации для самообучения:
generator :
SelfInstructGenerator :
target_dir : data/generations/
data_format : alpaca
seed_tasks_path : data/seed_tasks.jsonl
generated_instructions_path : generated_instructions.jsonl
generated_instances_path : generated_instances.jsonl
num_instructions_to_generate : 100
engine : gpt-3.5-turbo
num_prompt_instructions : 8
Дополнительные примеры файлов конфигурации можно найти на странице configs.
Пользователи должны сначала указать файл конфигурации и предоставить свой собственный ключ API OpenAI. Затем запустите следующий сценарий оболочки, чтобы запустить процесс генерации или выбора инструкций.
config_file= " "
openai_api_key= " "
python demo/run.py
--config $config_file
--openai_api_key $openai_api_key
Мы предоставляем пользователям приложение Gradio, чтобы они могли быстро начать работу с EasyInstruct. Вы можете запустить следующую команду, чтобы запустить приложение Gradio локально через порт 8080
(если он доступен).
python demo/app.py
Мы также размещаем работающее приложение Gradio в HuggingFace Spaces. Вы можете попробовать это здесь.
Пожалуйста, обратитесь к нашей документации для более подробной информации.
Модуль Generators
оптимизирует процесс генерации данных инструкций, позволяя генерировать данные инструкций на основе начальных данных. Вы можете выбрать подходящий генератор в зависимости от ваших конкретных потребностей.
BaseGenerator
— базовый класс для всех генераторов.
Вы также можете легко наследовать этот базовый класс, чтобы настроить свой собственный класс генератора. Просто переопределите
__init__
иgenerate
метод.
SelfInstructGenerator
— это класс метода генерации инструкций Self-Instruct. Дополнительные сведения см. в разделе «Самообучение: согласование языковой модели с самостоятельно сгенерированными инструкциями».
Пример
from easyinstruct import SelfInstructGenerator
from easyinstruct . utils . api import set_openai_key
# Step1: Set your own API-KEY
set_openai_key ( "YOUR-KEY" )
# Step2: Declare a generator class
generator = SelfInstructGenerator ( num_instructions_to_generate = 10 )
# Step3: Generate self-instruct data
generator . generate ()
BacktranslationGenerator
— это класс метода генерации инструкций Instruction Backtranslation. Для получения более подробной информации см. Самовыравнивание с обратным переводом инструкций.
from easyinstruct import BacktranslationGenerator
from easyinstruct . utils . api import set_openai_key
# Step1: Set your own API-KEY
set_openai_key ( "YOUR-KEY" )
# Step2: Declare a generator class
generator = BacktranslationGenerator ( num_instructions_to_generate = 10 )
# Step3: Generate backtranslation data
generator . generate ()
EvolInstructGenerator
— это класс метода генерации инструкций EvolInstruct. Дополнительные сведения см. в разделе WizardLM: Расширение возможностей больших языковых моделей для выполнения сложных инструкций.
from easyinstruct import EvolInstructGenerator
from easyinstruct . utils . api import set_openai_key
# Step1: Set your own API-KEY
set_openai_key ( "YOUR-KEY" )
# Step2: Declare a generator class
generator = EvolInstructGenerator ( num_instructions_to_generate = 10 )
# Step3: Generate evolution data
generator . generate ()
KG2InstructGenerator
— это класс метода генерации инструкций KG2Instruct. Для получения более подробной информации см. InstructIE: набор данных для извлечения информации на основе китайских инструкций.
Модуль Selectors
стандартизирует процесс выбора инструкций, позволяя извлекать высококачественные наборы данных инструкций из необработанных, необработанных данных инструкций. Необработанные данные могут быть получены из общедоступных наборов данных инструкций или сгенерированы самой платформой. Вы можете выбрать подходящий селектор в зависимости от ваших конкретных потребностей.
BaseSelector
— базовый класс для всех селекторов.
Вы также можете легко наследовать этот базовый класс, чтобы настроить свой собственный класс селектора. Просто переопределите методы
__init__
и__process__
.
Deduplicator
— это класс для устранения повторяющихся образцов инструкций, которые могут отрицательно повлиять как на стабильность перед обучением, так и на производительность LLM.Deduplicator
также позволяет эффективно использовать и оптимизировать пространство хранения.
LengthSelector
— это класс для выбора образцов инструкций на основе длины инструкции. Слишком длинные или слишком короткие инструкции могут повлиять на качество данных и не способствуют настройке инструкций.
RougeSelector
— класс для выбора образцов инструкций на основе метрики ROUGE, которая часто используется для оценки качества автоматизированной генерации текста.
GPTScoreSelector
— это класс для выбора образцов инструкций на основе оценки GPT, которая отражает, является ли вывод хорошим примером того, как AI Assistant должен реагировать на инструкции пользователя, предоставленные ChatGPT.
PPLSelector
— это класс для выбора образцов инструкций на основе недоумения, которое представляет собой возведенную в степень среднюю отрицательную логарифмическую вероятность ответа.
MTLDSelector
— это класс для выбора образцов инструкций на основе MTLD, что означает «мера текстового лексического разнообразия».
CodeSelector
— это класс для выбора образцов инструкций кода на основе оценки сложности мышления (CIRS), которая объединяет структурные и логические атрибуты для измерения корреляции между кодом и способностями к рассуждению. Посмотрите, когда программа мыслей помогает рассуждению? для более подробной информации.
from easyinstruct import CodeSelector
# Step1: Specify your source file of code instructions
src_file = "data/code_example.json"
# Step2: Declare a code selecter class
selector = CodeSelector (
source_file_path = src_file ,
target_dir = "data/selections/" ,
manually_partion_data = True ,
min_boundary = 0.125 ,
max_boundary = 0.5 ,
automatically_partion_data = True ,
k_means_cluster_number = 2 ,
)
# Step3: Process the code instructions
selector . process ()
MultiSelector
— это класс для объединения нескольких подходящих селекторов в зависимости от ваших конкретных потребностей.
Модуль Prompts
стандартизирует этап запроса инструкций, при котором пользовательские запросы формируются в виде подсказок инструкций и отправляются определенным LLM для получения ответов. Вы можете выбрать подходящий метод подсказки в зависимости от ваших конкретных потребностей.
Пожалуйста, перейдите по ссылке для получения более подробной информации.
Модуль Engines
стандартизирует процесс выполнения инструкций, позволяя выполнять подсказки инструкций на определенных локально развернутых LLM. Вы можете выбрать подходящий двигатель в зависимости от ваших конкретных потребностей.
Пожалуйста, перейдите по ссылке для получения более подробной информации.
Пожалуйста, укажите наш репозиторий, если вы используете EasyInstruct в своей работе.
@article { ou2024easyinstruct ,
title = { EasyInstruct: An Easy-to-use Instruction Processing Framework for Large Language Models } ,
author = { Ou, Yixin and Zhang, Ningyu and Gui, Honghao and Xu, Ziwen and Qiao, Shuofei and Bi, Zhen and Chen, Huajun } ,
journal = { arXiv preprint arXiv:2402.03049 } ,
year = { 2024 }
}
@misc { knowlm ,
author = { Ningyu Zhang and Jintian Zhang and Xiaohan Wang and Honghao Gui and Kangwei Liu and Yinuo Jiang and Xiang Chen and Shengyu Mao and Shuofei Qiao and Yuqi Zhu and Zhen Bi and Jing Chen and Xiaozhuan Liang and Yixin Ou and Runnan Fang and Zekun Xi and Xin Xu and Lei Li and Peng Wang and Mengru Wang and Yunzhi Yao and Bozhong Tian and Yin Fang and Guozhou Zheng and Huajun Chen } ,
title = { KnowLM: An Open-sourced Knowledgeable Large Langugae Model Framework } ,
year = { 2023 } ,
url = { http://knowlm.zjukg.cn/ } ,
}
@article { bi2023program ,
title = { When do program-of-thoughts work for reasoning? } ,
author = { Bi, Zhen and Zhang, Ningyu and Jiang, Yinuo and Deng, Shumin and Zheng, Guozhou and Chen, Huajun } ,
journal = { arXiv preprint arXiv:2308.15452 } ,
year = { 2023 }
}
Мы предложим долгосрочное обслуживание для исправления ошибок, решения проблем и удовлетворения новых запросов. Поэтому, если у вас есть какие-либо проблемы, пожалуйста, задайте их нам.
Другие связанные проекты
? Мы хотели бы выразить нашу сердечную благодарность за вклад Self-Instruct в наш проект, поскольку мы использовали части их исходного кода в нашем проекте.