Поделиться через


LoRA Fine-Tuning для Phi Silica

Низкоранговая адаптация (LoRA) может быть использована для точной настройки модели Phi Silica для повышения производительности в вашем конкретном случае. Используя LoRA для оптимизации Phi Silica, языковой модели Microsoft Windows для локализации, можно добиться более точных результатов. Этот процесс включает обучение адаптера LoRA, а затем применение его во время вывода для повышения точности модели.

Предпосылки

  • Вы определили способ улучшения реакции Phi Silica.
  • Вы выбрали критерии оценки, чтобы решить, что такое "хороший ответ".
  • Вы пробовали API-интерфейсы Phi Silica, и они не соответствуют вашим критериям оценки.

Обучение адаптера

Чтобы обучить адаптер LoRA для точной настройки модели Phi Silica с Windows 11, необходимо сначала создать набор данных, который будет использоваться учебным процессом.

Создание набора данных для использования с адаптером LoRA

Чтобы создать набор данных, необходимо разделить данные на два файла:

  • train.json — используется для обучения адаптера.

  • test.json — используется для оценки производительности адаптера во время и после обучения.

Оба файла должны использовать формат JSON, где каждая строка является отдельным объектом JSON, представляющим один пример. Каждый пример должен содержать список сообщений, обменяемых пользователем и помощником.

Для каждого объекта сообщения требуется два поля:

  • content: текст сообщения.

  • role "user": или "assistant", указывающий отправителя.

См. следующие примеры.

{"messages": [{"content": "Hello, how do I reset my password?", "role": "user"}, {"content": "To reset your password, go to the settings page and click 'Reset Password'.", "role": "assistant"}]} 

{"messages": [{"content": "Can you help me find nearby restaurants?", "role": "user"}, {"content": "Sure! Here are some restaurants near your location: ...", "role": "assistant"}]}  

{"messages": [{"content": "What is the weather like today?", "role": "user"}, {"content": "Today's forecast is sunny with a high of 25°C.", "role": "assistant"}]}  

Советы по обучению:

  • В конце каждой строки выборки отсутствует запятая.

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

  • Файл test.json может быть меньше, но должен охватывать типы взаимодействий, которые вы ожидаете, что модель будет обрабатывать.

  • Создайте файлы train.json и test.json, в каждом из которых находится один объект JSON на строку, содержащий краткий диалог между пользователем и помощником. Качество и количество данных значительно повлияет на эффективность адаптера LoRA.

Обучение адаптера LoRA в инструменте ИИ

Чтобы обучить адаптер LoRA с помощью набора средств ИИ для Visual Studio Code, сначала потребуется выполнить необходимые предварительные требования:

Чтобы установить ai Toolkit для Visual Studio Code, выполните следующее:

  1. Загрузите расширение AI Toolkit в Visual Studio Code

  2. После скачивания расширения AI Toolkit вы сможете получить доступ к нему с левой панели инструментов в Visual Studio Code.

  3. Перейдите к разделу "Средства>точной настройки".

  4. Введите имя проекта и расположение проекта.

  5. Выберите microsoft/phi-silica в каталоге моделей.

  6. Выберите "Настройка проекта".

    Снимок экрана: расширение AI Toolkit в Visual Studio Code.

  7. Выберите последнюю версию Phi Silica.

  8. В разделе Данные>, Имя обучающего набора данных и Имя тестового набора данных выберите свои train.json и test.json файлы.

  9. Выберите "Создать проект" — откроется новое окно VS Code.

  10. Убедитесь, что в файле bicep выбран правильный профиль рабочей нагрузки, чтобы задание Azure развертывалось и выполнялось правильно. Добавьте следующее под workloadProfiles:

    { 
         workloadProfileType: 'Consumption-GPU-NC24-A100' 
         name: 'GPU'
    } 
    
  11. Выберите "Новое задание тонкой настройки" и введите имя задания.

  12. Появится диалоговое окно с просьбой выбрать учетную запись Майкрософт, с помощью которой можно получить доступ к подписке Azure.

  13. После выбора учетной записи необходимо выбрать группу ресурсов в раскрывающемся меню подписки.

  14. Теперь вы увидите, что задание тонкой настройки успешно запущено вместе со статусом выполнения. После завершения задания вы сможете скачать только что обученный адаптер LoRA, нажав кнопку "Скачать". Как правило, выполнение задачи точной настройки занимает в среднем от 45 до 60 минут.

Вывод

Обучение — это начальный этап, в котором модель ИИ учится на основе большого набора данных, распознавания шаблонов и корреляций. С другой стороны, вывод — это этап приложения, в котором обученная модель (Phi Silica в нашем случае) использует новые данные (наш адаптер LoRA) для принятия прогнозов или решений, с помощью которых создается более настраиваемый результат.

Чтобы применить обученный адаптер LoRA, выполните следующие действия.

  1. Используйте приложение AI Dev Gallery. Коллекция разработчиков ИИ — это приложение, которое позволяет экспериментировать с локальными моделями ИИ и API, а также просматривать и экспортировать пример кода. Дополнительные сведения о Галерее разработки ИИ.

  2. После установки коллекции разработчиков ИИ откройте приложение и перейдите на вкладку "API ИИ", а затем выберите "Phi Silica LoRA".

    Снимок экрана галереи разработки ИИ, на которой отображаются API Windows, включая Phi Silica LoRA.

  3. Выберите файл адаптера. Расположение по умолчанию для этих хранимых значений: Desktop / lora_lab / trainedLora

  4. Заполните поля "Системный запрос" и "Запрос". Затем выберите "Создать", чтобы увидеть разницу между Phi Silica с адаптером LoRA и без нее.

  5. Поэкспериментируйте с запросом и системным запросом, чтобы узнать, как это влияет на ваши результаты.

  6. Выберите "Экспорт примера", чтобы скачать автономное решение Visual Studio, содержащее только этот пример кода.

Создание ответов

После тестирования нового адаптера LoRA с помощью коллекции разработчиков ИИ вы можете добавить адаптер в приложение Windows, используя приведенный ниже пример кода.

using Microsoft.Windows.AI.Text; 
using Microsoft.Windows.AI.Text.Experimental; 

// Path to the LoRA adapter file 
string adapterFilePath = "C:/path/to/adapter/file.safetensors"; 

// Prompt to be sent to the LanguageModel 
string prompt = "How do I add a new project to my Visual Studio solution?"; 

// Wait for LanguageModel to be ready 
if (LanguageModel.GetReadyState() == AIFeatureReadyState.NotReady) 

{ 
var languageModelDeploymentOperation = LanguageModel.EnsureReadyAsync();
     await languageModelDeploymentOperation; 
}   

// Create the LanguageModel session 
var session = LanguageModel.CreateAsync(); 

// Create the LanguageModelExperimental 
var languageModelExperimental = new LanguageModelExperimental(session); 

// Load the LoRA adapter 
LowRankAdaptation loraAdapter = languageModelExperimental.LoadAdapter(adapterFilePath); 

// Set the adapter in LanguageModelOptionsExperimental 
LanguageModelOptionsExperimental options = new LanguageModelOptionsExperimental 

{ 
LoraAdapter = loraAdapter 
}; 

// Generate a response with the LoRA adapter provided in the options 
var response = await languageModelExperimental.GenerateResponseAsync(prompt, options);

Ответственный ИИ — риски и ограничения тонкой настройки

Когда клиенты точно настраивают Phi Silica, он может повысить производительность и точность модели для конкретных задач и доменов, но также может привести к новым рискам и ограничениям, о которых должны знать клиенты. Ниже приведены некоторые из следующих рисков и ограничений:

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

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

  • Регургитация: Хотя данные обучения недоступны корпорации Microsoft или каким-либо сторонним клиентам, плохо настроенные модели могут воспроизводить или напрямую повторять обучающие данные. Клиенты несут ответственность за удаление любых персональных данных или иных защищенных сведений из обучающих данных и обязаны оценивать свои дополнительно обученные модели на предмет переобучения или других признаков низкого качества ответа. Чтобы избежать регургитации, клиентам рекомендуется предоставлять большие и разнообразные наборы данных.

  • Прозрачность модели и объяснимость: логика и обоснование модели могут стать более непрозрачными и трудно понять после тонкой настройки, особенно если данные сложны или абстрактные. Настраиваемая модель может создавать выходные данные, которые являются непредвиденными, несогласованными или противоречивыми, и клиенты могут не иметь возможности объяснить, как или почему модель прибыла на эти выходные данные. Например, если данные касаются юридических или медицинских терминов, модель может создавать выходные данные, которые являются неточными или вводящими в заблуждение, и клиенты могут не иметь возможности проверить или оправдать их. Клиенты должны отслеживать и проверять выходные данные и поведение модели, а также предоставлять четкие и точные сведения и рекомендации конечным пользователям модели.

См. также