모델 미세 조정
AI 모델 미세 조정은 GPU가 포함된 컴퓨팅 환경에서 사전 훈련된 모델에 대한 미세 조정 작업을 실행하기 위해 사용자 지정 데이터 세트를 사용할 수 있도록 하는 일반적인 관행입니다. AI Toolkit은 현재 GPU를 사용하여 로컬 머신 또는 GPU를 사용하여 클라우드(Azure Container App)에서 SLM을 미세 조정하는 것을 지원합니다.
미세 조정된 모델은 로컬로 다운로드하여 GPU로 추론 테스트를 수행하거나 CPU에서 로컬로 실행하기 위해 양자화할 수 있습니다. 미세 조정된 모델은 클라우드 환경에 원격 모델로 배포될 수도 있습니다.
VS Code용 AI Toolkit으로 Azure에서 AI 모델 미세 조정 (미리 보기)
VS Code용 AI Toolkit은 이제 모델 미세 조정을 실행하고 클라우드에서 추론 엔드포인트를 호스트하기 위해 Azure Container App을 프로비저닝하는 것을 지원합니다.
클라우드 환경 설정
-
원격 Azure Container Apps 환경에서 모델 미세 조정 및 추론을 실행하려면 구독에 충분한 GPU 용량이 있는지 확인하십시오. 필요한 용량을 요청하려면 지원 티켓을 제출하십시오. GPU 용량에 대한 자세한 정보
-
HuggingFace에서 비공개 데이터 세트를 사용하거나 기본 모델에 액세스 제어가 필요한 경우 HuggingFace 계정이 있고 액세스 토큰을 생성했는지 확인하십시오.
-
Mistral 또는 Llama를 미세 조정하는 경우 HuggingFace에서 라이선스에 동의하십시오.
-
VS Code용 AI Toolkit에서 원격 미세 조정 및 추론 기능 플래그 활성화
- 파일 -> 기본 설정 -> 설정을 선택하여 VS Code 설정을 엽니다.
- 확장으로 이동하여 AI Toolkit을 선택합니다.
- "Azure Container Apps에서 미세 조정 및 추론 실행 사용" 옵션을 선택합니다.

- 변경 사항을 적용하려면 VS Code를 다시 로드합니다.
미세 조정 프로젝트 스캐폴딩
- 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))에서
AI Toolkit: Focus on Tools View실행 Fine-tuning으로 이동하여 모델 카탈로그에 액세스합니다. 미세 조정을 위한 모델을 선택합니다. 프로젝트에 이름을 지정하고 컴퓨터에서 위치를 선택합니다. 그런 다음 "Configure Project" 버튼을 누릅니다.
- 프로젝트 구성
- "Fine-tune locally" 옵션 활성화는 피하십시오.
- Olive 구성 설정이 사전 설정된 기본값으로 나타납니다. 필요한 대로 이 구성을 조정하고 채우십시오.
- Generate Project로 이동합니다. 이 단계는 WSL을 활용하며, 새 Conda 환경을 설정하고, Dev Containers를 포함한 향후 업데이트를 준비합니다.

- "Relaunch Window In Workspace"를 선택하여 미세 조정 프로젝트를 엽니다.

프로젝트는 현재 VS Code용 AI Toolkit 내에서 로컬 또는 원격으로 작동합니다. 프로젝트 생성 중에 "Fine-tune locally"를 선택하면 클라우드 리소스 없이 WSL에서만 실행됩니다. 그렇지 않으면 프로젝트는 원격 Azure Container App 환경으로 제한됩니다.
Azure 리소스 프로비저닝
시작하려면 원격 미세 조정을 위한 Azure 리소스를 프로비저닝해야 합니다. 명령 팔레트에서 AI Toolkit: Provision Azure Container Apps job for fine-tuning을 찾아 실행합니다. 이 과정에서 Azure 구독 및 리소스 그룹을 선택하라는 메시지가 표시됩니다.

출력 채널에 표시된 링크를 통해 프로비저닝 진행 상황을 모니터링합니다. 
미세 조정 실행
원격 미세 조정 작업을 시작하려면 명령 팔레트에서 AI Toolkit: Run fine-tuning 명령을 실행합니다.

그런 다음 확장은 다음 작업을 수행합니다.
-
작업 영역을 Azure Files와 동기화합니다.
-
./infra/fintuning.config.json에 지정된 명령을 사용하여 Azure Container App 작업을 트리거합니다.
QLoRA가 미세 조정에 사용되며, 미세 조정 프로세스는 추론 중에 모델이 사용할 LoRA 어댑터를 생성합니다.
미세 조정 결과는 Azure Files에 저장됩니다. Azure File 공유에서 출력 파일을 탐색하려면 출력 패널에 제공된 링크를 사용하여 Azure 포털로 이동할 수 있습니다. 또는 Azure 포털에 직접 액세스하여 ./infra/fintuning.config.json에 정의된 STORAGE_ACCOUNT_NAME이라는 스토리지 계정과 ./infra/fintuning.config.json에 정의된 FILE_SHARE_NAME이라는 파일 공유를 찾을 수 있습니다.

로그 보기
미세 조정 작업이 시작되면 Azure 포털을 방문하여 시스템 및 콘솔 로그에 액세스할 수 있습니다.
또는 VSCode 출력 패널에서 직접 콘솔 로그를 볼 수 있습니다.

작업이 시작되는 데 몇 분 정도 걸릴 수 있습니다. 이미 실행 중인 작업이 있는 경우 현재 작업은 나중에 시작되도록 대기열에 포함될 수 있습니다.
Azure에서 로그 보기 및 쿼리
미세 조정 작업이 트리거된 후 VSCode 알림에서 "Open Logs in Azure Portal" 버튼을 선택하여 Azure에서 로그를 볼 수 있습니다.
또는 Azure 포털을 이미 연 경우 Azure Container Apps 작업의 "Execution history" 패널에서 작업 기록을 찾으십시오.

로그에는 "Console"과 "System"의 두 가지 유형이 있습니다.
- 콘솔 로그는
stderr및stdout메시지를 포함하여 앱의 메시지입니다. 이는 스트리밍 로그 섹션에서 이미 본 내용입니다. - 시스템 로그는 상태와 같은 서비스 수준 이벤트 메시지를 포함하여 Azure Container Apps 서비스의 메시지입니다.
로그를 보고 쿼리하려면 "Console" 버튼을 선택하고 Log Analytics 페이지로 이동하여 모든 로그를 보고 쿼리를 작성할 수 있습니다.

Azure Container Apps 로그에 대한 자세한 내용은 Azure Container Apps의 애플리케이션 로깅을 참조하십시오.
VSCode에서 스트리밍 로그 보기
미세 조정 작업을 시작한 후 VSCode 알림의 "Show Streaming Logs in VS Code" 버튼을 선택하여 Azure에서 로그를 볼 수도 있습니다.
또는 명령 팔레트에서 AI Toolkit: Show the running fine-tuning job streaming logs 명령을 실행할 수 있습니다.

실행 중인 미세 조정 작업의 스트리밍 로그가 출력 패널에 표시됩니다.

리소스 부족으로 인해 작업이 대기열에 포함될 수 있습니다. 로그가 표시되지 않으면 잠시 기다린 후 명령을 실행하여 스트리밍 로그에 다시 연결하십시오. 스트리밍 로그는 시간 초과되어 연결이 끊길 수 있습니다. 그러나 명령을 다시 실행하여 다시 연결할 수 있습니다.
미세 조정된 모델로 추론
어댑터가 원격 환경에서 훈련된 후 간단한 Gradio 애플리케이션을 사용하여 모델과 상호 작용합니다.

Azure 리소스 프로비저닝
미세 조정 프로세스와 유사하게, 명령 팔레트에서 AI Toolkit: Provision Azure Container Apps for inference를 실행하여 원격 추론에 대한 Azure 리소스를 설정해야 합니다. 이 설정 중에 Azure 구독 및 리소스 그룹을 선택하라는 메시지가 표시됩니다.

기본적으로 추론에 대한 구독 및 리소스 그룹은 미세 조정에 사용된 것과 일치해야 합니다. 추론은 동일한 Azure Container App 환경을 사용하고 미세 조정 단계에서 생성된 Azure Files에 저장된 모델 및 모델 어댑터에 액세스합니다.
추론 배포
추론 코드를 수정하거나 추론 모델을 다시 로드하려는 경우 AI Toolkit: Deploy for inference 명령을 실행하십시오. 이렇게 하면 최신 코드가 ACA와 동기화되고 복제본이 다시 시작됩니다.

배포가 성공적으로 완료된 후 모델은 이 엔드포인트를 사용하여 평가할 준비가 되었습니다. VSCode 알림에 표시된 "Go to Inference Endpoint" 버튼을 선택하여 추론 API에 액세스할 수 있습니다. 또는 웹 API 엔드포인트는 ./infra/inference.config.json의 ACA_APP_ENDPOINT 아래와 출력 패널에서 찾을 수 있습니다.

추론 엔드포인트가 완전히 작동하려면 몇 분 정도 걸릴 수 있습니다.
고급 사용법
미세 조정 프로젝트 구성 요소
| 폴더 | 내용 |
|---|---|
infra |
원격 작동에 필요한 모든 구성을 포함합니다. |
infra/provision/finetuning.parameters.json |
미세 조정을 위한 Azure 리소스 프로비저닝에 사용되는 bicep 템플릿의 매개변수를 보유합니다. |
infra/provision/finetuning.bicep |
미세 조정을 위한 Azure 리소스 프로비저닝 템플릿을 포함합니다. |
infra/finetuning.config.json |
AI Toolkit: Provision Azure Container Apps job for fine-tuning 명령에 의해 생성된 구성 파일입니다. 다른 원격 명령 팔레트의 입력으로 사용됩니다. |
Azure Container Apps에서 미세 조정을 위한 비밀 구성
Azure Container App 비밀은 Azure Container Apps 내에서 HuggingFace 토큰 및 Weights & Biases API 키와 같은 민감한 데이터를 안전하게 저장하고 관리하는 방법을 제공합니다. AI Toolkit의 명령 팔레트를 사용하여 프로비저닝된 Azure 컨테이너 앱 작업(./finetuning.config.json에 저장됨)에 비밀을 입력할 수 있습니다. 이러한 비밀은 모든 컨테이너의 환경 변수로 설정됩니다.
단계
-
명령 팔레트에서
AI Toolkit: Add Azure Container Apps Job secret for fine-tuning을 입력하고 선택합니다.
-
비밀 이름 및 값 제공


예를 들어, 비공개 HuggingFace 데이터 세트 또는 Hugging Face 액세스 제어가 필요한 모델을 사용하는 경우, Hugging Face Hub에서 수동 로그인할 필요가 없도록 HuggingFace 토큰을 환경 변수
HF_TOKEN으로 설정하십시오.
비밀을 설정한 후 Azure Container App에서 사용할 수 있습니다. 비밀은 컨테이너 앱의 환경 변수에 설정됩니다.
미세 조정을 위한 Azure 리소스 프로비저닝 구성
이 가이드에서는 AI Toolkit: Provision Azure Container Apps job for fine-tuning 명령을 구성하는 데 도움이 됩니다.
./infra/provision/finetuning.parameters.json 파일에서 구성 매개변수를 찾을 수 있습니다. 자세한 내용은 다음과 같습니다.
| Parameter | 설명 |
|---|---|
defaultCommands |
이것은 미세 조정 작업을 시작하는 기본 명령입니다. ./infra/finetuning.config.json에서 덮어쓸 수 있습니다. |
maximumInstanceCount |
이 매개변수는 GPU 인스턴스의 최대 용량을 설정합니다. |
timeout |
이것은 Azure Container App 미세 조정 작업의 시간 제한을 초 단위로 설정합니다. 기본값은 10800으로 3시간에 해당합니다. Azure Container App 작업이 이 시간 제한에 도달하면 미세 조정 프로세스가 중단됩니다. 그러나 기본적으로 체크포인트가 저장되어 미세 조정 프로세스를 처음부터 다시 시작하는 대신 마지막 체크포인트에서 재개할 수 있습니다. |
location |
Azure 리소스가 프로비저닝되는 위치입니다. 기본값은 선택한 리소스 그룹의 위치와 동일합니다. |
storageAccountName, fileShareName acaEnvironmentName, acaEnvironmentStorageName, acaJobName, acaLogAnalyticsName |
이 매개변수는 프로비저닝을 위한 Azure 리소스의 이름을 지정하는 데 사용됩니다. 새롭고 사용되지 않는 리소스 이름을 입력하여 사용자 지정 이름으로 리소스를 만들거나, 이미 존재하는 Azure 리소스 이름을 입력하여 해당 리소스를 사용하는 것을 선호할 수 있습니다. |
기존 Azure 리소스 사용
미세 조정을 위해 구성해야 하는 기존 Azure 리소스가 있는 경우 ./infra/provision/finetuning.parameters.json 파일에 해당 이름을 지정한 다음 명령 팔레트에서 AI Toolkit: Provision Azure Container Apps job for fine-tuning을 실행할 수 있습니다. 그러면 지정된 리소스가 업데이트되고 누락된 리소스가 생성됩니다.
예를 들어, 기존 Azure 컨테이너 환경이 있는 경우 ./infra/finetuning.parameters.json은 다음과 같아야 합니다.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
...
"acaEnvironmentName": {
"value": "<your-aca-env-name>"
},
"acaEnvironmentStorageName": {
"value": null
},
...
}
}
수동 프로비저닝
Azure 리소스를 수동으로 설정하는 것을 선호하는 경우 ./infra/provision 폴더의 제공된 bicep 파일을 사용할 수 있습니다. AI Toolkit 명령 팔레트를 사용하지 않고 모든 Azure 리소스를 이미 설정하고 구성한 경우 finetune.config.json 파일에 리소스 이름을 입력하기만 하면 됩니다.
예를 들어,
{
"SUBSCRIPTION_ID": "<your-subscription-id>",
"RESOURCE_GROUP_NAME": "<your-resource-group-name>",
"STORAGE_ACCOUNT_NAME": "<your-storage-account-name>",
"FILE_SHARE_NAME": "<your-file-share-name>",
"ACA_JOB_NAME": "<your-aca-job-name>",
"COMMANDS": [
"cd /mount",
"pip install huggingface-hub==0.22.2",
"huggingface-cli download <your-model-name> --local-dir ./model-cache/<your-model-name> --local-dir-use-symlinks False",
"pip install -r ./setup/requirements.txt",
"python3 ./finetuning/invoke_olive.py && find models/ -print | grep adapter/adapter"
]
}
템플릿에 포함된 추론 구성 요소
| 폴더 | 내용 |
|---|---|
infra |
원격 작동에 필요한 모든 구성을 포함합니다. |
infra/provision/inference.parameters.json |
추론을 위한 Azure 리소스 프로비저닝에 사용되는 bicep 템플릿의 매개변수를 보유합니다. |
infra/provision/inference.bicep |
추론을 위한 Azure 리소스 프로비저닝 템플릿을 포함합니다. |
infra/inference.config.json |
AI Toolkit: Provision Azure Container Apps for inference 명령에 의해 생성된 구성 파일입니다. 다른 원격 명령 팔레트의 입력으로 사용됩니다. |
Azure 리소스 프로비저닝 구성
이 가이드에서는 AI Toolkit: Provision Azure Container Apps for inference 명령을 구성하는 데 도움이 됩니다.
./infra/provision/inference.parameters.json 파일에서 구성 매개변수를 찾을 수 있습니다. 자세한 내용은 다음과 같습니다.
| Parameter | 설명 |
|---|---|
defaultCommands |
이것은 웹 API를 시작하는 명령입니다. |
maximumInstanceCount |
이 매개변수는 GPU 인스턴스의 최대 용량을 설정합니다. |
location |
Azure 리소스가 프로비저닝되는 위치입니다. 기본값은 선택한 리소스 그룹의 위치와 동일합니다. |
storageAccountName, fileShareName acaEnvironmentName, acaEnvironmentStorageName, acaAppName, acaLogAnalyticsName |
이 매개변수는 프로비저닝을 위한 Azure 리소스의 이름을 지정하는 데 사용됩니다. 기본적으로 미세 조정 리소스 이름과 동일합니다. 새롭고 사용되지 않는 리소스 이름을 입력하여 사용자 지정 이름으로 리소스를 만들거나, 이미 존재하는 Azure 리소스 이름을 입력하여 해당 리소스를 사용하는 것을 선호할 수 있습니다. |
기존 Azure 리소스 사용
기본적으로 추론 프로비저닝은 미세 조정을 위해 사용된 것과 동일한 Azure Container App 환경, 스토리지 계정, Azure 파일 공유 및 Azure Log Analytics를 사용합니다. 추론 API 전용으로 별도의 Azure Container App이 생성됩니다.
미세 조정 단계에서 Azure 리소스를 사용자 지정했거나 추론에 자체 기존 Azure 리소스를 사용하려는 경우 ./infra/inference.parameters.json 파일에 해당 이름을 지정하십시오. 그런 다음 명령 팔레트에서 AI Toolkit: Provision Azure Container Apps for inference 명령을 실행하십시오. 그러면 지정된 리소스가 업데이트되고 누락된 리소스가 생성됩니다.
예를 들어, 기존 Azure 컨테이너 환경이 있는 경우 ./infra/finetuning.parameters.json은 다음과 같아야 합니다.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
...
"acaEnvironmentName": {
"value": "<your-aca-env-name>"
},
"acaEnvironmentStorageName": {
"value": null
},
...
}
}
수동 프로비저닝
Azure 리소스를 수동으로 구성하는 것을 선호하는 경우 ./infra/provision 폴더의 제공된 bicep 파일을 사용할 수 있습니다. AI Toolkit 명령 팔레트를 사용하지 않고 모든 Azure 리소스를 이미 설정하고 구성한 경우 inference.config.json 파일에 리소스 이름을 입력하기만 하면 됩니다.
예를 들어,
{
"SUBSCRIPTION_ID": "<your-subscription-id>",
"RESOURCE_GROUP_NAME": "<your-resource-group-name>",
"STORAGE_ACCOUNT_NAME": "<your-storage-account-name>",
"FILE_SHARE_NAME": "<your-file-share-name>",
"ACA_APP_NAME": "<your-aca-name>",
"ACA_APP_ENDPOINT": "<your-aca-endpoint>"
}
학습 내용
이 문서에서는 다음 방법을 배웠습니다.
- Azure Container Apps에서 미세 조정 및 추론을 지원하도록 VS Code용 AI Toolkit 설정
- VS Code용 AI Toolkit에서 미세 조정 프로젝트 만들기
- 데이터 세트 선택 및 학습 매개변수를 포함한 미세 조정 워크플로 구성
- 미세 조정 워크플로를 실행하여 사전 훈련된 모델을 특정 데이터 세트에 맞게 조정
- 메트릭 및 로그를 포함한 미세 조정 프로세스 결과 보기
- 모델 추론 및 테스트를 위해 샘플 노트북 사용
- 미세 조정 프로젝트 내보내기 및 공유
- 다른 데이터 세트 또는 학습 매개변수를 사용하여 모델 재평가
- 실패한 작업 처리 및 재실행을 위한 구성 조정
- 지원되는 모델 및 미세 조정을 위한 요구 사항 이해
- VS Code용 AI Toolkit을 사용하여 Azure 리소스 프로비저닝, 미세 조정 작업 실행 및 추론을 위한 모델 배포를 포함하여 미세 조정 프로젝트 관리