В последнем блоге мы представили тонкую настройку 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, для обучения нашего скрипта. Основное преимущество, которое она предоставляет, выходит далеко за рамки возможности совместно использовать среду и помогать команда ускоряется, не особо беспокоясь об окружающей среде. Это также помогает зафиксировать настройки среды, которые используются изначально, изолируя/отделяя их от сценария обучения. Сценарий обучения намного проще и им легко управлять как компонентом.