GraphGen: тонкая настройка языковых моделей с помощью графов знаний для создания синтетических данных
Общее введение
GraphGen - это фреймворк с открытым исходным кодом, разработанный OpenScienceLab, лабораторией искусственного интеллекта в Шанхае, размещенный на GitHub и направленный на оптимизацию контролируемой тонкой настройки больших языковых моделей (LLM) путем управления генерацией синтетических данных с помощью графов знаний. Он строит графы знаний из исходного текста, выявляет "слепые зоны" в знаниях модели с помощью метрики ожидаемой ошибки калибровки (ECE) и определяет приоритетность генерации пар вопросов и ответов, нацеленных на высокоценные, длиннохвостые знания. GraphGen поддерживает многоходовую выборку окрестностей для сбора сложной реляционной информации и генерирует разнообразные данные с помощью контроля стиля. Проект лицензирован под лицензией Apache 2.0, а код открыт для академических исследований и коммерческой разработки. Пользователи могут гибко настраивать процесс генерации через командную строку или интерфейс Gradio, а сгенерированные данные могут быть напрямую использованы для обучения модели.


Список функций
- Построение тонких графов знаний: извлечение сущностей и отношений из текста для создания структурированных графов знаний.
- Выявление слепых зон в знаниях: обнаружение слабых мест в языковых моделях на основе метрики ожидаемой ошибки калибровки (ECE).
- Создание высокоценных пар вопросов и ответов: приоритетное создание данных вопросов и ответов для длиннохвостых знаний, чтобы повысить эффективность модели.
- Многоходовая выборка окрестностей: отражение многоуровневых связей в графах знаний для повышения сложности данных.
- Генерация контроля стиля: поддержка различных стилей вопросов и ответов, таких как краткий или подробный, для адаптации к различным сценариям.
- Пользовательская конфигурация: настройка типов данных, входных файлов и путей вывода с помощью файлов YAML.
- Поддержка интерфейса Gradio: предоставляет визуальный интерфейс для упрощения операций по созданию данных.
- Совместимость моделей: поддержка различных языковых моделей (например, Qwen, OpenAI) для генерации и обучения данных.
Использование помощи
Процесс установки
GraphGen - это Python-проект, который поддерживает установку из PyPI или запуск из исходников. Ниже приведены подробные шаги по установке:
Установка из PyPI
- Установите GraphGen
Убедитесь, что версия Python 3.8 или выше, выполнив следующую команду:pip install graphg
- Настройка переменных среды
GraphGen требует обращения к API моделирования языка (например, Qwen или OpenAI). Установите переменные окружения в терминале:export SYNTHESIZER_MODEL="your_synthesizer_model_name" export SYNTHESIZER_BASE_URL="your_base_url" export SYNTHESIZER_API_KEY="your_api_key" export TRAINEE_MODEL="your_trainee_model_name" export TRAINEE_BASE_URL="your_base_url" export TRAINEE_API_KEY="your_api_key"SYNTHESIZER_MODELМодели для генерации графов знаний и данных.TRAINEE_MODEL: Модели, используемые для обучения.
- Запустите инструмент командной строки
Выполните следующую команду, чтобы сгенерировать данные:graphg --output_dir cache
Установка из источника
- склад клонов
Клонируйте репозиторий GraphGen локально:git clone https://github.com/open-sciencelab/GraphGen.git cd GraphGen - Создание виртуальной среды
Создайте и активируйте виртуальную среду:python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows - Установка зависимостей
Установите зависимости проекта:pip install -r requirements.txtУбедитесь, что установлен PyTorch (рекомендуется версия 1.13.1 или выше) и связанные с ним библиотеки (например, LiteLLM, DSPy). Если используется GPU, установите версию, совместимую с CUDA:
pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 --extra-index-url https://download.pytorch.org/whl/cu117 - Настройка переменных среды
Скопируйте файл окружения примера и отредактируйте его:cp .env.example .envсуществовать
.envфайл для установки информации, связанной с моделью:SYNTHESIZER_MODEL=your_synthesizer_model_name SYNTHESIZER_BASE_URL=your_base_url SYNTHESIZER_API_KEY=your_api_key TRAINEE_MODEL=your_trainee_model_name TRAINEE_BASE_URL=your_base_url TRAINEE_API_KEY=your_api_key - Подготовка к вводу данных
GraphGen требует входной текст в формате JSONL. Данные для примера находятся в папкеresources/examples/raw_demo.jsonl. Пользователи могут подготовить пользовательские данные для обеспечения согласованного форматирования.
Использование
GraphGen поддерживает как командную строку, так и интерфейс Gradio. Ниже приведены подробные шаги:
работа в командной строке
- Измените конфигурационный файл
компиляторconfigs/graphgen_config.yamlфайл для установки параметров генерации данных:data_type: "raw" input_file: "resources/examples/raw_demo.jsonl" output_dir: "cache" ece_threshold: 0.1 sampling_hops: 2 style: "detailed"data_type: Тип входных данных (например.raw).input_file: Введите путь к файлу.output_dir: Выходной каталог.ece_threshold: пороговые значения ECE для определения слепых зон знаний.sampling_hops: Глубина многоходовой выборки.style: стили генерации вопросов и ответов (например.detailedвозможноconcise).
- Запустите сгенерированный скрипт
Выполните следующую команду, чтобы сгенерировать данные:bash scripts/generate.shили просто запустите сценарий Python:
python -m graphg --config configs/graphgen_config.yaml - Просмотр сгенерированных результатов
Созданные пары вопросов и ответов сохраняются в файлеcache/data/graphgenкаталог в формате JSONL-файла:ls cache/data/graphgen
Работа с интерфейсом Gradio
- Запуск интерфейса Gradio
Выполните следующую команду, чтобы запустить интерфейс визуализации:python webui/app.pyВ браузере откроется интерфейс Gradio, показывающий процесс генерации данных.
- рабочий процесс
- Загружает в интерфейс входной файл в формате JSONL.
- Настройте параметры генерации (например, порог ECE, глубину выборки, стиль генерации).
- Нажмите на кнопку "Generate", и система обработает входные данные и выведет пары вопросов и ответов.
- Загрузите сгенерированный файл JSONL.
Функциональное управление
- построение графа знанийGraphGen автоматически извлекает сущности и связи из входного текста, генерирует граф знаний и сохраняет его в формате JSON. Никакого ручного вмешательства не требуется.
- Определение слепых зон: Прогнозирование предвзятости с помощью аналитической модели метрик ECE и создание целевых пар вопросов и ответов. Корректировка
ece_thresholdКонтроль строгости слепого отбора. - Многоходовая выборка окрестностей: Учет многоуровневых отношений в графах знаний для создания сложных пар вопросов и ответов. Настройка
sampling_hopsУправляет глубиной выборки. - Генерация управления стилем: Поддерживается несколько стилей вопросов и ответов для различных сценариев. Пользователи могут
styleПараметр выбирает стиль.
Модели обучения
Сгенерированные данные можно использовать для тонкой настройки под наблюдением (SFT). Импортируйте выходной файл во фреймворк, поддерживающий SFT (например, XTuner):
xtuner train --data cache/data/graphgen/output.jsonl --model qwen-7b
предостережение
- Убедитесь, что ключ API и сетевое соединение стабильны и что процесс генерации вызывает внешнюю модель.
- Входные данные должны быть в формате JSONL, см.
raw_demo.jsonl. - Для оптимизации производительности при генерации больших объемов данных рекомендуется использовать GPU-устройства.
- Проверьте версии зависимостей, чтобы избежать конфликтов. Обновите, если необходимо
requirements.txt.
Дополнительные ресурсы
- Центр приложений OpenXLab: Пользователи могут получить доступ к информации через OpenXLab Опыт работы с GraphGen.
- Официальный FAQ: обратитесь к GitHub ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ Решение общих проблем.
- технический анализ: Любезно предоставлено DeepWiki Анализ системной архитектурыВ этом разделе подробно описывается рабочий процесс GraphGen.
сценарий применения
- научные исследования
Исследователи могут использовать GraphGen для создания данных Q&A для специализированных доменов. Например, генерирование обучающих данных для модели химической или медицинской области улучшает охват знаний модели. - Оптимизация искусственного интеллекта на предприятии
Предприятия могут использовать GraphGen для создания пользовательских пар вопросов и ответов в системах обслуживания клиентов или рекомендательных системах, оптимизируя реакцию своих диалоговых моделей. - Разработка образовательных платформ
Разработчики могут генерировать разнообразные данные о преподавании вопросов и ответов, чтобы создавать интеллектуальные образовательные инструменты для поддержки персонализированного обучения.
QA
- Какие модели поддерживает GraphGen?
GraphGen поддерживает OpenAI, Qwen, Ollama и другие модели через LiteLLM. Требуются ключи и адреса API моделей. - Как подготовить исходные данные?
Входные данные должны быть в формате JSONL, каждая строка которого содержит текстовое содержимое. Ссылкаresources/examples/raw_demo.jsonl. - Сколько времени требуется для получения данных?
На обработку данных небольшого объема (100 записей) может уйти несколько минут, а на обработку данных большого объема - несколько часов, в зависимости от объема вводимых данных и производительности оборудования. - Как работает интерфейс Gradio?
быть в движенииpython webui/app.pyДанные генерируются путем загрузки входного файла через браузер и настройки параметров.
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...




