GraphGen: тонкая настройка языковых моделей с помощью графов знаний для создания синтетических данных

Общее введение

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

GraphGen:利用知识图谱生成合成数据微调语言模型GraphGen:利用知识图谱生成合成数据微调语言模型

 

Список функций

  • Построение тонких графов знаний: извлечение сущностей и отношений из текста для создания структурированных графов знаний.
  • Выявление слепых зон в знаниях: обнаружение слабых мест в языковых моделях на основе метрики ожидаемой ошибки калибровки (ECE).
  • Создание высокоценных пар вопросов и ответов: приоритетное создание данных вопросов и ответов для длиннохвостых знаний, чтобы повысить эффективность модели.
  • Многоходовая выборка окрестностей: отражение многоуровневых связей в графах знаний для повышения сложности данных.
  • Генерация контроля стиля: поддержка различных стилей вопросов и ответов, таких как краткий или подробный, для адаптации к различным сценариям.
  • Пользовательская конфигурация: настройка типов данных, входных файлов и путей вывода с помощью файлов YAML.
  • Поддержка интерфейса Gradio: предоставляет визуальный интерфейс для упрощения операций по созданию данных.
  • Совместимость моделей: поддержка различных языковых моделей (например, Qwen, OpenAI) для генерации и обучения данных.

 

Использование помощи

Процесс установки

GraphGen - это Python-проект, который поддерживает установку из PyPI или запуск из исходников. Ниже приведены подробные шаги по установке:

Установка из PyPI

  1. Установите GraphGen
    Убедитесь, что версия Python 3.8 или выше, выполнив следующую команду:

    pip install graphg
  1. Настройка переменных среды
    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: Модели, используемые для обучения.
  2. Запустите инструмент командной строки
    Выполните следующую команду, чтобы сгенерировать данные:

    graphg --output_dir cache
    

Установка из источника

  1. склад клонов
    Клонируйте репозиторий GraphGen локально:

    git clone https://github.com/open-sciencelab/GraphGen.git
    cd GraphGen
    
  2. Создание виртуальной среды
    Создайте и активируйте виртуальную среду:

    python -m venv venv
    source venv/bin/activate  # Linux/Mac
    venv\Scripts\activate     # Windows
    
  3. Установка зависимостей
    Установите зависимости проекта:

    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
    
  4. Настройка переменных среды
    Скопируйте файл окружения примера и отредактируйте его:

    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
    
  5. Подготовка к вводу данных
    GraphGen требует входной текст в формате JSONL. Данные для примера находятся в папке resources/examples/raw_demo.jsonl. Пользователи могут подготовить пользовательские данные для обеспечения согласованного форматирования.

Использование

GraphGen поддерживает как командную строку, так и интерфейс Gradio. Ниже приведены подробные шаги:

работа в командной строке

  1. Измените конфигурационный файл
    компилятор 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).
  2. Запустите сгенерированный скрипт
    Выполните следующую команду, чтобы сгенерировать данные:

    bash scripts/generate.sh
    

    или просто запустите сценарий Python:

    python -m graphg --config configs/graphgen_config.yaml
    
  3. Просмотр сгенерированных результатов
    Созданные пары вопросов и ответов сохраняются в файле cache/data/graphgen каталог в формате JSONL-файла:

    ls cache/data/graphgen
    

Работа с интерфейсом Gradio

  1. Запуск интерфейса Gradio
    Выполните следующую команду, чтобы запустить интерфейс визуализации:

    python webui/app.py
    

    В браузере откроется интерфейс Gradio, показывающий процесс генерации данных.

  2. рабочий процесс
    • Загружает в интерфейс входной файл в формате 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.

 

сценарий применения

  1. научные исследования
    Исследователи могут использовать GraphGen для создания данных Q&A для специализированных доменов. Например, генерирование обучающих данных для модели химической или медицинской области улучшает охват знаний модели.
  2. Оптимизация искусственного интеллекта на предприятии
    Предприятия могут использовать GraphGen для создания пользовательских пар вопросов и ответов в системах обслуживания клиентов или рекомендательных системах, оптимизируя реакцию своих диалоговых моделей.
  3. Разработка образовательных платформ
    Разработчики могут генерировать разнообразные данные о преподавании вопросов и ответов, чтобы создавать интеллектуальные образовательные инструменты для поддержки персонализированного обучения.

 

QA

  1. Какие модели поддерживает GraphGen?
    GraphGen поддерживает OpenAI, Qwen, Ollama и другие модели через LiteLLM. Требуются ключи и адреса API моделей.
  2. Как подготовить исходные данные?
    Входные данные должны быть в формате JSONL, каждая строка которого содержит текстовое содержимое. Ссылка resources/examples/raw_demo.jsonl.
  3. Сколько времени требуется для получения данных?
    На обработку данных небольшого объема (100 записей) может уйти несколько минут, а на обработку данных большого объема - несколько часов, в зависимости от объема вводимых данных и производительности оборудования.
  4. Как работает интерфейс Gradio?
    быть в движении python webui/app.pyДанные генерируются путем загрузки входного файла через браузер и настройки параметров.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...