에 대한 AI 도구 키트를 사용하여 모델 미세 조정 VS Code
AI 도구 키트(AI 도구 키트 VS Code )는 앱 또는 클라우드를 사용하여 AI 모델을 다운로드, 테스트, 미세 조정 및 배포할 수 있는 확장입니다 VS Code . 자세한 내용은 AI 도구 키트 개요를 참조하세요.
이 문서에서는 다음을 수행하는 방법을 알아봅니다.
- 미세 조정하도록 로컬 환경을 설정합니다.
- 미세 조정 작업을 실행합니다.
필수 조건
- 에 대한 Visual Studio CodeAI 도구 키트 시작 완료
- Windows 컴퓨터를 사용하여 미세 조정하는 경우 설치 Windows Subsystem for Linux (WSL)합니다. WSL 및 기본 Linux 배포판이 설치되도록 WSL을 사용하여 Windows에 Linux를 설치하는 방법을 참조하세요. WSL Ubuntu 배포 18.04 이상은 AI Toolkit VS Code을 사용하기 전에 설치하고 기본 배포로 설정해야 합니다. 기본 배포를 변경하는 방법을 알아봅니다.
- Linux 컴퓨터를 사용하는 경우 Ubuntu 배포 18.04 이상이어야 합니다.
- 미리 보기 중에 AI 도구 키트는 미세 조정을 위한 VS Code NVIDIA GPU만 지원합니다.
팁
컴퓨터에 최신 NVIDIA 드라이버 가 설치되어 있는지 확인합니다. 게임 준비 드라이버 또는 스튜디오 드라이버 중에서 선택할 수 있는 경우 Studio Driver를 다운로드합니다.
올바른 드라이버를 다운로드하려면 GPU의 모델을 알아야 합니다. 어떤 GPU가 있는지 알아보려면 GPU를 확인하는 방법 및 중요한 이유를 참조하세요.
환경 설정
로컬 디바이스 또는 클라우드 VM에서 미세 조정 작업을 실행하는 데 필요한 모든 필수 구성 요소가 있는지 확인하려면 명령 팔레트(Shift+Control+P) 를 열고 AI 도구 키트: 환경 필수 구성 요소의 유효성을 검사합니다.
로컬 디바이스가 유효성 검사를 통과하면 WSL 환경 설정 단추가 사용하도록 설정됩니다. 이렇게 하면 미세 조정 작업을 실행하는 데 필요한 모든 종속성이 설치됩니다.
클라우드 VM
로컬 컴퓨터에 Nvidia GPU 디바이스가 없는 경우 Nvidia GPU(할당량이 있는 경우)를 사용하여 클라우드 VM(Windows 및 Linux 모두)을 미세 조정할 수 있습니다. Azure에서는 다음 VM 시리즈로 미세 조정할 수 있습니다.
- NCasT4_v3 시리즈
- NC A100 v4 시리즈
- ND A100 v4 시리즈
- NCads_H100 v5 시리즈
- NCv3 시리즈
- NVadsA10 v5 시리즈
팁
VS Code 를 사용하면 클라우드 VM에 원격으로 연결할 수 있습니다. 이 기능에 익숙하지 않은 경우 SSH를 통해 원격 개발 자습서를 참조 하세요.
모델 미세 조정
AI 도구 키트는 QLoRA라는 메서드를 사용하여 수량화 및 LoRA(하위 순위 적응)를 결합하여 모델을 사용자 고유의 데이터로 미세 조정합니다. QLoRA의 QLoRA: 양자화된 LLM의 효율적인 미세 조정에 대해 자세히 알아보세요.
1단계: 프로젝트 구성
QLoRA를 사용하여 새 미세 조정 세션을 시작하려면 AI 도구 키트에서 모델 미세 조정 항목을 선택합니다.
먼저 고유한 프로젝트 이름 및 프로젝트 위치를 입력합니다. 프로젝트 파일을 저장하기 위해 선택한 위치에 지정된 프로젝트 이름을 가진 새 폴더가 만들어집니다.
다음으로 모델 카탈로그에서 모델(예: Phi-3-mini-4k-instruct)을 선택한 다음 프로젝트 구성을 선택합니다.
그런 다음, 미세 조정 프로젝트 설정을 구성하라는 메시지가 표시됩니다. 로컬로 미세 조정 확인란이 선택되어 있는지 확인합니다(나중에 VS Code 확장을 통해 클라우드에 미세 조정을 오프로드할 수 있음).
모델 유추 설정
모델 유추 섹션에서 사용할 수 있는 두 가지 설정은 다음과 같습니다.
설정 | 설명 |
---|---|
Conda 환경 이름 | 정품 인증하고 미세 조정 프로세스에 사용할 conda 환경의 이름입니다. 이 이름은 conda 설치에서 고유해야 합니다. |
유추 프롬프트 템플릿 | 유추 시 사용할 프롬프트 템플릿입니다. 미세 조정된 버전과 일치하는지 확인합니다. |
데이터 설정
데이터 섹션에서 데이터 세트 정보를 구성하는 데 사용할 수 있는 설정은 다음과 같습니다.
설정 | 설명 |
---|---|
데이터 세트 이름 | 모델을 미세 조정하는 데 사용할 데이터 세트의 이름입니다. |
학습 분할 | 데이터 세트의 학습 분할 이름입니다. |
데이터 세트 형식 | 사용할 데이터 세트의 형식입니다. |
텍스트 열 | 학습 프롬프트를 채울 데이터 세트의 열 이름입니다. |
텍스트 템플릿 | 모델을 미세 조정하는 데 사용할 프롬프트 템플릿입니다. 텍스트 열의 대체 토큰을 사용합니다. |
코퍼스 전략 | 샘플을 조인할지 아니면 한 줄씩 처리할지를 나타냅니다. |
원본 최대 길이 | 학습 샘플당 최대 토큰 수입니다. |
최대 길이까지 패드 | 최대 토큰 수까지 학습 샘플에 PAD 토큰을 추가합니다. |
설정 미세 조정
미세 조정 섹션에서 다음 설정을 사용하여 미세 조정 프로세스를 추가로 구성할 수 있습니다.
설정 | 데이터 형식 | 기본값 | 설명 |
---|---|---|---|
Compute Dtype | 문자열 | bfloat16 | 모델 가중치 및 어댑터 가중치의 데이터 형식입니다. 4비트 정량화된 모델의 경우 양자화된 모듈의 계산 데이터 형식이기도 합니다. 유효한 값: bfloat16, float16 또는 float32. |
퀀트 형식 | 문자열 | nf4 | 사용할 양자화 데이터 형식입니다. 유효한 값: fp4 또는 nf4. |
이중 퀀트 | Boolean | 예 | 첫 번째 양자화의 양자화 상수가 다시 양자화되는 중첩된 양자화를 사용할지 여부입니다. |
Lora r | 정수 | 64 | Lora 주의 차원입니다. |
Lora alpha | Float | 16 | Lora 크기 조정에 대한 알파 매개 변수입니다. |
Lora 드롭아웃 | Float | 0.1 | Lora 계층의 드롭아웃 확률입니다. |
Eval 데이터 세트 크기 | Float | 1024 | 유효성 검사 데이터 세트의 크기입니다. |
Seed | 정수 | 0 | 초기화를 위한 임의 시드입니다. |
데이터 시드 | 정수 | 42 | 데이터 샘플러와 함께 사용할 임의 시드입니다. |
디바이스 학습 일괄 처리 크기당 | 정수 | 1 | 학습을 위한 GPU당 일괄 처리 크기입니다. |
디바이스별 eval 일괄 처리 크기 | 정수 | 1 | 평가를 위한 GPU당 일괄 처리 크기입니다. |
그라데이션 누적 단계 | 정수 | 4 | 이전/업데이트 패스를 수행하기 전에 그라데이션을 누적하는 업데이트 단계의 수입니다. |
그라데이션 검사점 사용 | Boolean | 예 | 그라데이션 검사점을 사용합니다. 메모리를 저장하는 것이 좋습니다. |
학습 속도 | Float | 0.0002 | AdamW의 초기 학습 속도입니다. |
최대 단계 | 정수 | -1 | 양수로 설정하면 수행할 총 학습 단계 수입니다. 이렇게 하면 num_train_epochs 재정의됩니다. 유한 반복 가능한 데이터 세트를 사용하는 경우 모든 데이터가 소진된 경우 설정된 단계 수에 도달하기 전에 학습이 중지할 수 있습니다. |
2단계: 프로젝트 생성
모든 매개 변수가 설정되면 프로젝트 생성을 클릭합니다. 이렇게 하면 다음 작업이 수행됩니다.
- 모델 다운로드를 시작합니다.
- 모든 필수 구성 요소 및 종속성을 설치합니다.
- 작업 영역을 만듭니 VS Code 다.
모델을 다운로드하고 환경이 준비되면 3단계 - 프로젝트 생성 페이지에서 작업 영역에서 다시 시작 창을 선택하여 AI 도구 키트에서 프로젝트를 시작할 수 있습니다. 그러면 사용자 환경에 연결된 새 인스턴스 VS Code 가 시작됩니다.
참고 항목
프롬프트 흐름VS Code과 같은 추가 확장을 설치하라는 메시지가 표시될 수 있습니다. 최적의 미세 조정 환경을 위해 설치하여 계속 진행합니다.
다시 실행된 창은 작업 영역에 다음 폴더가 있습니다.
폴더 이름 | 설명 |
---|---|
데이터 세트 | 이 폴더에는 템플릿의 데이터 세트(dataset-classification.json 구와 톤이 포함된 JSON 줄 파일)가 포함되어 있습니다. 로컬 파일 또는 Hugging Face 데이터 세트를 사용하도록 프로젝트를 설정한 경우 이 폴더를 무시할 수 있습니다. |
미세 조정 | 미세 조정 작업을 실행할 Olive 구성 파일입니다. Olive는 모델 압축, 최적화 및 컴파일에서 업계 최고의 기술을 구성하는 사용하기 쉬운 하드웨어 인식 모델 최적화 도구입니다. 모델 및 대상 하드웨어를 고려할 때 Olive는 정확도 및 대기 시간과 같은 제약 조건 집합을 고려하면서 클라우드 또는 에지에서 유추하기 위한 가장 효율적인 모델을 출력하는 가장 적합한 최적화 기술을 구성합니다. |
추론 | 미세 조정된 모델을 사용하여 추론하기 위한 코드 샘플입니다. |
인프라 | Azure Container App Service를 사용하여 미세 조정 및 유추(출시 예정). 이 폴더에는 Azure Container App Service를 프로비전하는 Bicep 및 구성 파일이 포함되어 있습니다. |
setup | conda 환경을 설정하는 데 사용되는 파일입니다. 예를 들어 pip 요구 사항입니다. |
3단계: 미세 조정 작업 실행
이제 다음을 사용하여 모델을 미세 조정할 수 있습니다.
# replace {conda-env-name} with the name of the environment you set
conda activate {conda-env-name}
python finetuning/invoke_olive.py
Important
미세 조정하는 데 걸리는 시간은 GPU 유형, GPU 수, 단계 수 및 Epoch 수에 따라 달라집니다. 시간이 오래 걸릴 수 있습니다(예: 몇 시간이 걸릴 수 있습니다).
빠른 테스트만 수행하려면 파일의 최대 단계 수를 줄이는 것이 좋습니다 olive-config.json
. 검사점이 사용되므로 다음 미세 조정 실행은 마지막 검사점에서 계속됩니다.
검사점 및 최종 모델은 프로젝트의 폴더에 models
저장됩니다.
4단계: 앱에 미세 조정된 모델 통합
다음으로, web browser
prompt flow
또는 .에서 채팅을 통해 미세 조정된 모델로 추론을 console
실행합니다.
cd inference
# Console interface.
python console_chat.py
# Web browser interface allows to adjust a few parameters like max new token length, temperature and so on.
# User has to manually open the link (e.g. http://127.0.0.1:7860) in a browser after gradio initiates the connections.
python gradio_chat.py
팁
지침은 프로젝트 폴더에서 README.md
찾을 수 있는 페이지에서도 사용할 수 있습니다.