В последнем блоге мы представили тонкую настройку OSS LLM на Azure ML. Одной из важнейших задач была настройка среды для тонкой настройки. В этом блоге мы специально сосредоточимся на нем, подробно раскроем его и узнаем, как Azure ML делает его эффективным, гибким и простым для нас, чтобы использовать его образы перед сборкой для оптимального и легкого обучения.

Во время настройки конвейера обучения мы управляли средой выполнения, используя настройку AML conda и PIP env через среду conda.

Хотя нам удалось заставить его работать, накладные расходы на управление средой были возложены на AML Pipeline и обучающие сценарии. Это не идеально в нескольких отношениях.

Azure ML упрощает предоставление базовых образов для создания настраиваемой среды, предназначенной для обучения и вывода. Давайте рассмотрим, как? В вашем рабочем пространстве AML вы найдете оптимизированные среды для варианта использования. Для меня это была графическая среда PyTorch Py3.8 CUDA 11.7, которую я буду использовать в качестве готового образа для тонкой настройки LLM (EleutherAI/gpt-neox-20b).

Мы можем просмотреть Dockerfile этого кураторского образа.

Создание пользовательской среды

Содержимое Dockerfile становится отправной точкой для создания собственной адаптированной среды.

Добавьте все необходимые зависимости PIP в файл requirements.txt, они настраиваются в нашем учебном примере использования.

Окружающая среда процесса

При этом создается адаптированный образ, который передается в реестр контейнеров Azure, подключенный к AML.

Изображение успешно создано

Тренировка/тонкая настройка

Со ссылкой на скрипт [https://github.com/keshavksingh/finetuning-llm-azureml/tree/main/llm-customenv] мы обучаем LLM поверх созданной нами пользовательской среды.

Мы смогли использовать пользовательскую среду, которую мы создали в AML, для обучения нашего скрипта. Основное преимущество, которое она предоставляет, выходит далеко за рамки возможности совместно использовать среду и помогать команда ускоряется, не особо беспокоясь об окружающей среде. Это также помогает зафиксировать настройки среды, которые используются изначально, изолируя/отделяя их от сценария обучения. Сценарий обучения намного проще и им легко управлять как компонентом.