중요합니다
이 문서에 표시된 항목(미리 보기)은 현재 퍼블릭 미리 보기에서 확인할 수 있습니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
Azure AI Foundry를 사용하면 미세 조정이라는 프로세스를 통해 큰 언어 모델을 특정 데이터 세트에 사용자 지정할 수 있습니다. 이 프로세스는 특정 작업 및 애플리케이션에 맞게 사용자 지정 및 최적화를 허용하여 상당한 이점을 제공합니다. 이점은 향상된 성능, 비용 효율성, 대기 시간 감소 및 맞춤형 출력을 포함합니다.
비용 효율성: Azure AI Foundry의 미세 조정은 표준 가격 책정 덕분에 특히 대규모 배포에 더 비용 효율적일 수 있습니다.
모델 다양성: Azure AI Foundry의 표준 배포 미세 조정은 독점 모델과 오픈 소스 모델 모두에 대한 지원을 제공하므로 사용자는 단일 형식으로 제한되지 않고 자신의 요구에 가장 적합한 모델을 유연하게 선택할 수 있습니다.
사용자 지정 및 제어: Azure AI Foundry는 미세 조정 프로세스에 대한 더 큰 사용자 지정 및 제어를 제공하여 사용자가 특정 요구 사항에 보다 정확하게 모델을 조정할 수 있도록 합니다.
이 문서에서는 Azure AI Foundry에서 표준 배포를 사용하여 배포된 모델을 미세 조정하는 방법을 알아보세요.
필수 조건
유효한 결제 방법을 사용하는 Azure 구독입니다. 무료 또는 평가판 Azure 구독은 작동하지 않습니다. Azure 구독이 없는 경우, 시작하려면 유료 Azure 계정을 만드세요.
Azure Portal에 대한 액세스 권한.
Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure AI Foundry 포털에서 작업에 대한 액세스 권한을 부여하는 데 사용됩니다. 이 문서의 단계를 수행하려면 사용자 계정에 Azure 구독에 대한 소유자 또는 기여자 역할이 할당되어야 합니다. 권한에 대한 자세한 내용은 Azure AI Foundry 포털의 역할 기반 액세스 제어를 참조 하세요.
구독 공급자 등록 확인
구독이 Microsoft.Network 리소스 공급자에 등록되었는지 확인합니다.
- Azure Portal에 로그인합니다.
- 왼쪽 메뉴에서 구독을 선택합니다.
- 사용할 구독을 선택합니다.
- 왼쪽 메뉴에서 설정>리소스 공급자를 선택합니다.
- 목록에 없는 경우 리소스 공급자 목록에 Microsoft.Network를 추가합니다.
미세 조정 지원을 사용하여 모델 찾기
AI Foundry 모델 카탈로그는 채팅 완성 및 텍스트 생성을 포함하여 여러 유형의 모델에 대한 미세 조정 지원을 제공합니다. 미세 조정을 지원하는 모델 목록과 미세 조정을 지원하는 Azure 지역은 표준 배포로 모델에 대한 지역 가용성 을 참조하세요. 세부 조정 작업은 모델 공급자가 제품을 사용할 수 있게 한 국가/지역의 청구 계정에 Azure 구독이 속한 사용자만 사용할 수 있습니다. 관련 지역에서 제품을 사용할 수 있는 경우 사용자는 해당 모델을 배포하거나 미세 조정할 수 있는 Azure 지역에 프로젝트 리소스가 있어야 합니다.
Azure AI Foundry 포털로 이동하여 미세 조정 지원이 포함된 모든 모델을 볼 수도 있습니다.
Azure AI Foundry에 로그인합니다.
프로젝트에 아직 들어가지 않은 경우, 선택하세요.
모델 카탈로그로 이동합니다.
미세 조정 작업 필터를 선택합니다.
[모두]를 선택하거나 특정 작업을 선택합니다.
미세 조정을 위한 데이터 준비
모델 미세 조정을 위해 학습 및 유효성 검사 데이터를 준비합니다. 학습 및 유효성 검사 데이터는 모델을 수행하는 방법에 대한 입력 및 출력 예제로 구성됩니다.
모든 학습 예제가 예상 유추 형식을 따르는지 확인합니다. 모델을 효과적으로 미세 조정하려면 다양한 시나리오를 포함하여 데이터 균형을 유지하고 실제 기대에 맞게 학습 데이터를 주기적으로 구체화하여 다양한 데이터 세트를 보장합니다. 이러한 작업은 궁극적으로 보다 정확하고 균형 잡힌 모델 응답으로 이어지고 있습니다.
팁 (조언)
모델 유형에 따라 학습 데이터의 형식이 다릅니다.
예제 파일 형식
지원되는 파일 형식은 JSON 줄입니다. 파일은 기본 데이터 저장소에 업로드되며, 프로젝트에서 사용할 수 있습니다.
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}
모델 미세 조정 마법사 사용
Azure AI Foundry 포털은 사용자 지정 모델 만들기 마법사를 제공하므로 Azure 리소스에 대한 미세 조정된 모델을 대화형으로 만들고 학습할 수 있습니다.
기본 모델 선택
- Azure AI Foundry 모델 카탈로그에서 미세 조정하려는 모델을 선택합니다.
- 모델의 세부 정보 페이지에서미세 조정을 선택합니다. 일부 기본 모델은 표준 배포 와 관리형 컴퓨팅을 모두 지원하는 반면 다른 모델은 하나 또는 다른 모델을 지원합니다.
- 표준 배포 및 관리형 컴퓨팅에 대한 옵션이 표시되는 경우 미세 조정을 위해 표준 배포를 선택합니다. 이 작업을 수행하면 모델에 대한 표준 미세 조정에 대한 정보가 표시되는 마법사가 열립니다.
학습 데이터 선택
다음 단계는 모델을 사용자 지정할 때 사용할 준비된 기존 학습 데이터를 선택하거나 준비된 새 학습 데이터를 업로드하는 것입니다. 학습 데이터 창에는 이전에 업로드한 기존 데이터 세트가 표시되고, 새 학습 데이터를 업로드하는 옵션이 제공됩니다.
- 학습 데이터가 서비스에 이미 업로드된 경우 Azure AI Foundry에서 파일을 선택합니다.
- 표시된 드롭다운 목록에서 파일을 선택합니다.
- 새 학습 데이터를 업로드하려면 다음 옵션 중 하나를 사용합니다.
- 로컬 파일을 선택하여 로컬 파일에서 학습 데이터를 업로드합니다.
- Azure Blob 또는 다른 공유 웹 위치에서 학습 데이터를 가져오려면 Azure Blob 또는 다른 공유 웹 위치를 선택합니다.
대용량 데이터 파일의 경우 Azure Blob 저장소에서 가져오는 것이 좋습니다. Azure Blob Storage에 대한 자세한 내용은 Azure Blob Storage란?을 참조하세요.
로컬 파일에서 학습 데이터 업로드
다음 방법 중 하나를 사용하여 로컬 파일의 새 학습 데이터 세트를 서비스에 업로드할 수 있습니다.
- 학습 데이터 창의 클라이언트 영역으로 파일을 끌어서 놓은 다음 파일 업로드를 선택합니다.
- 학습 데이터 창의 클라이언트 영역에서 파일 찾아보기를 선택하고 열기 대화 상자에서 업로드할 파일을 선택한 다음 파일 업로드를 선택합니다. 학습 데이터 세트를 선택하고 업로드한 후 다음을 선택하여 계속합니다.
유효성 검사 데이터 선택
다음 단계에서는 학습 프로세스에서 유효성 검사 데이터를 사용하도록 모델을 구성하는 옵션을 제공합니다. 유효성 검사 데이터를 사용하지 않으려는 경우 다음을 선택하고 모델에 대한 고급 옵션을 선택할 수 있습니다. 사용하려는 경우 유효성 검사 데이터 세트가 있으면 준비된 기존 유효성 검사 데이터를 선택하거나, 모델을 사용자 지정할 때 사용할 새로운 준비된 유효성 검사 데이터를 업로드할 수 있습니다. 유효성 검사 데이터 창에는 이전에 업로드한 기존 데이터 세트가 표시되고, 새 유효성 검사 데이터를 업로드할 수 있는 옵션이 제공됩니다.
학습 데이터 분할
학습 데이터를 자동으로 나누어 유효성 검사 데이터 세트를 생성할 수 있습니다. 학습 데이터의 자동 분할을 선택한 후 다음 을 선택하여 계속합니다.
Azure AI Foundry에서 기존 데이터 사용
- 유효성 검사 데이터가 서비스에 이미 업로드된 경우 데이터 세트 선택을 선택합니다.
- 유효성 검사 데이터 창에 표시된 목록에서 파일을 선택합니다.
- 새 유효성 검사 데이터를 업로드하려면 다음 옵션 중 하나를 사용합니다.
- 로컬 파일을 선택하여 로컬 파일에서 유효성 검사 데이터를 업로드합니다.
- Azure Blob 또는 다른 공유 웹 위치에서 유효성 검사 데이터를 가져오려면 Azure Blob 또는 다른 공유 웹 위치를 선택합니다. 대용량 데이터 파일의 경우 Azure Blob 저장소에서 가져오는 것이 좋습니다. 요청이 원자성이어서 다시 시도하거나 다시 시작할 수 없기 때문에 대용량 파일은 멀티파트 양식을 통해 업로드할 때 불안정해질 수 있습니다.
비고
- 데이터 파일 학습과 마찬가지로 유효성 검사 데이터 파일의 형식은 JSONL 파일로 지정해야 합니다.
- BOM(바이트 순서 표시)을 사용하여 UTF-8로 인코딩됩니다. 파일 크기는 512MB 미만이어야 합니다.
로컬 파일에서 유효성 검사 데이터 업로드
다음 방법 중 하나를 사용하여 로컬 파일의 새 유효성 검사 데이터 세트를 서비스에 업로드할 수 있습니다.
- 유효성 검사 데이터 창의 클라이언트 영역으로 파일을 끌어서 놓은 다음, 파일 업로드를 선택합니다.
- 유효성 검사 데이터 창의 클라이언트 영역에서 파일 찾아보기를 선택하고 Open 대화 상자에서 업로드할 파일을 선택한 다음 파일 업로드를 선택합니다. 유효성 검사 데이터 세트를 선택하고 업로드한 후 다음을 선택하여 계속합니다.
작업 매개 변수 구성
모델 미세 조정 마법사는 작업 매개 변수 창에서 미세 조정된 모델을 학습하기 위한 매개 변수를 보여 줍니다. 다음과 같은 매개 변수를 사용할 수 있습니다.
이름 | 유형 | 설명 |
---|---|---|
batch_size |
정수 | 학습에 사용할 일괄 처리 크기입니다. 일괄 처리 크기는 단일 전진 및 후진 계산법을 학습하는 데 사용되는 학습 예의 수입니다. 일반적으로 더 큰 일괄 처리 크기는 더 큰 데이터 세트에 대해 더 잘 작동하는 경향이 있음을 발견했습니다. 기본값과 이 속성의 최대값은 기본 모델과 관련이 있습니다. 일괄 처리 크기가 클수록 모델 매개 변수는 덜 자주 업데이트되지만 분산은 낮습니다. |
learning_rate_multiplier |
숫자 | 학습에 사용할 학습 속도 승수입니다. 미세 조정 학습 속도는 사전 학습에 사용되는 원래 학습 속도에 이 값을 곱한 것입니다. 학습률이 클수록 일괄 처리 크기가 클수록 성능이 더 좋은 경향이 있습니다. 0.02에서 0.2 사이의 값으로 실험하여 최상의 결과를 생성하는 값을 확인하는 것이 좋습니다. 학습률이 작을수록 과잉 맞춤을 방지하는 데 유용할 수 있습니다. |
n_epochs |
정수 | 모델을 학습할 epoch 수입니다. Epoch는 학습 데이터 세트를 통한 하나의 전체 주기를 나타냅니다. |
기본값을 선택하여 미세 조정 작업에 기본값을 사용하거나 사용자 지정을 선택하여 하이퍼 매개 변수 값을 표시하고 편집합니다. 기본값을 선택하면 학습 데이터를 기반으로 알고리즘적으로 올바른 값을 결정합니다. 고급 옵션을 구성한 후에는 다음을 선택하여 선택한 내용을 검토하고 미세 조정된 모델을 학습시킵니다.
선택한 내용 검토 및 모델 학습
마법사의 검토 창에는 구성 선택에 대한 정보가 표시됩니다.
모델을 학습할 준비가 되면 학습 작업을 선택하여 미세 조정 작업을 시작하고 모델 탭으로 돌아갑니다.
사용자 지정 모델 상태 확인
미세 조정 탭에는 사용자 지정 모델에 대한 정보가 표시됩니다. 탭에는 사용자 지정 모델에 대한 미세 조정 작업의 상태 및 작업 ID에 대한 정보가 포함됩니다. 작업이 완료되면 탭에 결과 파일의 파일 ID가 표시됩니다. 모델 학습 작업에 대한 업데이트된 상태를 보려면 새로 고침을 선택해야 할 수 있습니다.
미세 조정 작업을 시작한 후 완료하는 데 시간이 걸릴 수 있습니다. 사용자의 작업이 시스템의 다른 작업 뒤에 대기 중일 수 있습니다. 모델 및 데이터 세트 크기에 따라 모델을 학습하는 데 몇 분 또는 몇 시간이 걸릴 수 있습니다. 다음은 모델 탭에서 수행할 수 있는 몇 가지 작업 입니다 .
- 사용자 지정 모델 탭의 상태 열에서 사용자 지정 모델에 대한 미세 조정 작업의 상태를 확인합니다.
- 모델 이름 열에서 모델 이름을 선택하여 사용자 지정 모델에 대한 자세한 정보를 봅니다. 작업에 사용되는 미세 조정 작업, 학습 결과, 학습 이벤트 및 하이퍼 매개 변수의 상태를 확인할 수 있습니다.
- 새로 고침을 선택하여 페이지의 정보를 업데이트합니다.
미세 조정을 위해 지원되는 엔터프라이즈 시나리오
표준 배포 미세 조정을 위해 여러 엔터프라이즈 시나리오가 지원됩니다. 아래 표에서는 엔터프라이즈 시나리오 내에서 원활한 작업을 보장하기 위해 사용자 스토리지 네트워킹 및 인증에 지원되는 구성을 간략하게 설명합니다.
비고
- 데이터 세트가 저장된 데이터 저장소 연결을 클릭하고 Access 세부 정보>인증 방법 설정으로 이동하여 AI Foundry를 통해 데이터 연결 인증을 변경할 수 있습니다.
- Azure Storage 설정> 허용.
- 스토리지 네트워킹은 Azure Storage >네트워킹 페이지에서 변경할 수 있습니다.
스토리지 네트워킹 | 스토리지 인증 | 데이터 연결 인증 | 지원 |
---|---|---|---|
공용 네트워크 액세스 = 사용 | 계정 키를 사용하도록 설정 | SAS/계정 키 | 예, UX 및 SDK |
공용 네트워크 액세스 = 사용 | 계정 키를 사용하지 않도록 설정 | Entra 기반 인증(자격 증명 없는) | 예, UX 및 SDK 참고: UX의 경우 스토리지 계정의 사용자 ID에 대한 Storage Blob 데이터 판독기 또는 Storage Blob 데이터 기여자를 추가하거나 계정 키/SAS 토큰을 사용하도록 연결의 인증을 변경해야 할 수 있습니다. |
선택한 가상 네트워크 및 IP 주소에서 사용 | 계정 키를 사용하도록 설정 | 계정 키 | 예, UX 및 SDK 참고: UX의 경우 브라우저를 실행하는 컴퓨팅의 IP가 선택한 목록에 있어야 합니다. |
선택한 가상 네트워크 및 IP 주소에서 사용 | 계정 키를 사용하도록 설정 | SAS | 예, UX 및 SDK 참고: UX의 경우 브라우저를 실행하는 컴퓨팅의 IP가 선택한 목록에 있어야 합니다. |
선택한 가상 네트워크 및 IP 주소에서 사용 | 계정 키를 사용하지 않도록 설정 | Entra 기반 인증(자격 증명 없는) | 예, UX 및 SDK. 참고: UX의 경우 스토리지 계정의 사용자 ID에 대한 Storage Blob 데이터 판독기 또는 Storage Blob 데이터 기여자를 추가하거나 계정 키/SAS 토큰을 사용하도록 연결의 인증을 변경해야 할 수 있습니다. 또한 브라우저를 실행하는 컴퓨팅의 IP가 선택한 목록에 있어야 합니다. |
공용 네트워크 액세스 = 사용 안 함 | 계정 키를 사용하도록 설정 | SAS/계정 키 | 예, UX 및 SDK. 참고: UX 데이터 업로드 및 제출이 작동하려면 스토리지에 대한 적절한 액세스 권한이 있는 Vnet 내에서 작업 영역에 액세스해야 합니다. |
공용 네트워크 액세스 = 사용 안 함 | 계정 키를 사용하지 않도록 설정 | Entra 기반 인증(자격 증명 없는) | 예, UX 및 SDK. 참고: UX 데이터 업로드 및 제출이 작동하려면 스토리지에 대한 적절한 액세스 권한이 있는 Vnet 내에서 작업 영역에 액세스해야 합니다. |
위의 시나리오는 관리되는 Vnet 작업 영역에서도 작동해야 합니다. 관리되는 Vnet AI Foundry 허브 설정 참조: Azure AI Foundry 허브에 대한 관리되는 네트워크를 구성하는 방법
CMK(Customer-Managed 키)는 표준 배포 미세 조정에서 지원되는 엔터프라이즈 시나리오가 아닙니다 .
작업 영역 및 스토리지에서 고유한 네트워크 설정을 최적화하는 데 문제가 있는 경우, 이는 일반적으로 네트워크 설정상의 문제를 나타냅니다.
미세 조정된 모델 배포
미세 조정 작업이 성공하면 미세 조정 탭에서 사용자 지정 모델을 배포할 수 있습니다. 완료 호출에 사용할 수 있도록 사용자 지정 모델을 배포해야 합니다.
중요합니다
사용자 지정된 모델을 배포하고 엔드포인트를 완료한 후에는 비활성 엔드포인트를 정리해야 합니다. 비활성 배포를 삭제해도 기본 사용자 지정 모델은 삭제되거나 영향을 받지 않으며 사용자 지정 모델은 언제든지 다시 배포될 수 있습니다. Azure AI Foundry 가격 책정에 설명된 대로 배포된 각 사용자 지정(미세 조정된) 모델은 완료 또는 채팅 완료 호출이 모델에 대해 이루어지는지 여부에 관계없이 시간당 호스팅 비용이 발생합니다. Azure AI Foundry를 사용하여 비용을 계획하고 관리하는 방법에 대한 자세한 내용은 Azure AI Foundry Service에 대한 비용 관리 계획의 지침을 참조하세요.
비고
하나의 사용자 지정 모델에는 하나의 배포만 허용됩니다. 이미 배포된 사용자 지정 모델을 선택하면 오류 메시지가 표시됩니다. 사용자 지정 모델을 배포하려면 배포할 사용자 지정 모델을 선택한 다음 모델 배포를 선택합니다.
모델 배포 대화 상자가 열립니다. 대화 상자에서 배포 이름을 입력한 다음 배포 를 선택하여 사용자 지정 모델의 배포를 시작합니다.
모델 + 엔드포인트 탭을 통해 먼저 모델 배포 단추를 선택한 다음, 드롭다운에서 미세 조정된 모델 배포를 선택하여 미세 조정된 모델을 배포할 수도 있습니다.
다음으로 배포하려는 미세 조정된 모델을 선택하고 배포를 선택합니다.
지역 간 배포
미세 조정은 모델이 원래 미세 조정된 지역과 다른 지역에 미세 조정된 모델을 배포하도록 지원합니다. 다른 구독/지역에 배포할 수도 있습니다. 유일한 제한 사항은 새 지역에서도 미세 조정을 지원해야 하며 교차 구독을 배포할 때 배포에 대한 권한 부여 토큰을 생성하는 계정에 원본 및 대상 구독 모두에 대한 액세스 권한이 있어야 한다는 것입니다. 구독 간/지역 배포는 Python을 통해 수행할 수 있습니다.
배포된 사용자 지정 모델 사용
사용자 지정 모델이 배포되었으면 배포된 다른 모델처럼 사용할 수 있습니다. Azure AI Foundry 포털의 Playgrounds를 사용하여 새 배포를 실험할 수 있습니다. 다른 배포된 모델과 마찬가지로 온도 및 max_tokens 같은 사용자 지정 모델에서 동일한 매개 변수를 계속 사용할 수 있습니다.
미세 조정된 모델 정리
Azure AI Foundry의 미세 조정 모델 목록 또는 모델 세부 정보 페이지에서 미세 조정된 모델을 삭제할 수 있습니다. 미세 조정 페이지에서 미세 조정된 모델을 삭제하려면
- Azure AI Foundry 프로젝트의 왼쪽 탐색 영역에서 미세 조정을 선택합니다.
- 삭제 단추를 선택하여 미세 조정된 모델을 삭제합니다.
비고
기존 배포가 있는 사용자 지정 모델은 삭제할 수 없습니다. 사용자 지정 모델을 삭제하기 전에 먼저 모델 배포를 삭제해야 합니다.
모델을 사용할 클라이언트 만들기
다음 섹션에서는 Python에서 모델을 미세 조정하는 방법을 안내합니다. 이 코드의 Notebook 예제를 찾으려면 Model-As-Service를 사용하여 LLM 미세 조정을 참조하세요.
- 종속성을 설치하여 모델 미세 조정을 시작해야 합니다.
%pip install azure-ai-ml
%pip install azure-identity
%pip install mlflow
%pip install azureml-mlflow
- 모델을 사용할 클라이언트를 만듭니다. 다음 코드는 환경 변수에 저장된 엔드포인트 URL과 키를 사용합니다.
from azure.ai.ml import MLClient
from azure.identity import (
DefaultAzureCredential,
InteractiveBrowserCredential,
)
try:
credential = DefaultAzureCredential()
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
credential = InteractiveBrowserCredential()
try:
workspace_ml_client = MLClient.from_config(credential=credential)
except:
workspace_ml_client = MLClient(
credential,
subscription_id="<SUBSCRIPTION_ID>",
resource_group_name="<RESOURCE_GROUP_NAME>",
workspace_name="<PROJECT_NAME OR WORKSPACE_NAME>",
)
# the models, fine tuning pipelines and environments are available in various AzureML system registries,
# Example: Phi family of models are in "azureml", Llama family of models are in "azureml-meta" registry.
registry_ml_client = MLClient(credential, registry_name="azureml")
# Get AzureML workspace object.
workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace.id
미세 조정 지원을 사용하여 모델 찾기
AI Foundry 모델 카탈로그는 채팅 완성 및 텍스트 생성을 포함하여 여러 유형의 모델에 대한 미세 조정 지원을 제공합니다. 미세 조정을 지원하는 모델 목록과 미세 조정을 지원하는 Azure 지역은 표준 배포의 모델에 대한 지역 가용성을 참조하세요. 세부 조정 작업은 모델 공급자가 제품을 사용할 수 있게 한 국가/지역의 청구 계정에 Azure 구독이 속한 사용자만 사용할 수 있습니다. 관련 지역에서 제품을 사용할 수 있는 경우 사용자는 해당 모델을 배포하거나 미세 조정할 수 있는 Azure 지역에 프로젝트 리소스가 있어야 합니다.
이 예제에서는 Phi-4 미니 지시 모델을 사용합니다. 이 코드 조각에서 모델의 모델 ID 속성은 미세 조정 작업에 대한 입력으로 전달됩니다. Azure AI Foundry 모델 카탈로그의 모델 세부 정보 페이지에서 자산 ID 필드로도 사용할 수 있습니다.
model_name = "Phi-4-mini-instruct"
model_to_finetune = registry_ml_client.models.get(model_name, label="latest")
print(
"\n\nUsing model name: {0}, version: {1}, id: {2} for fine tuning".format(
model_to_finetune.name, model_to_finetune.version, model_to_finetune.id
)
)
미세 조정을 위한 데이터 준비
모델 미세 조정을 위해 학습 및 유효성 검사 데이터를 준비합니다. 학습 및 유효성 검사 데이터는 모델을 수행하는 방법에 대한 입력 및 출력 예제로 구성됩니다.
모든 학습 예제가 예상 유추 형식을 따르는지 확인합니다. 모델을 효과적으로 미세 조정하려면 다양한 시나리오를 포함하여 데이터 균형을 유지하고 실제 기대에 맞게 학습 데이터를 주기적으로 구체화하여 다양한 데이터 세트를 보장합니다. 이러한 작업은 궁극적으로 보다 정확하고 균형 잡힌 모델 응답으로 이어지고 있습니다.
팁 (조언)
모델 유형에 따라 학습 데이터의 형식이 다릅니다.
예제 파일 형식
지원되는 파일 형식은 JSON 줄입니다. 파일은 기본 데이터 저장소에 업로드되며, 프로젝트에서 사용할 수 있습니다.
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}
학습 데이터 입력 만들기
이 코드 조각에서는 학습 데이터 세트를 정의하는 방법을 보여 줍니다.
from azure.ai.ml.constants import AssetTypes
from azure.ai.ml.entities import Data
dataset_version = "1"
train_dataset_name = "chat_training_small"
try:
train_data_asset = workspace_ml_client.data.get(
train_dataset_name, version=dataset_version
)
print(f"Dataset {train_dataset_name} already exists")
except:
print("creating dataset")
train_data = Data(
path=f"./train.jsonl",
type=AssetTypes.URI_FILE,
description="Training dataset",
name=train_dataset_name,
version="1",
)
train_data_asset = workspace_ml_client.data.create_or_update(train_data)
유효성 검사 데이터 만들기
다음 단계에서는 학습 프로세스에서 유효성 검사 데이터를 사용하도록 모델을 구성하는 옵션을 제공합니다. 유효성 검사 데이터를 사용하지 않으려면 이 단계를 건너뛰고 다음 섹션으로 계속 진행하도록 선택할 수 있습니다. 사용하려는 경우 유효성 검사 데이터 세트가 있으면 준비된 기존 유효성 검사 데이터를 선택하거나, 모델을 사용자 지정할 때 사용할 새로운 준비된 유효성 검사 데이터를 업로드할 수 있습니다.
from azure.ai.ml.entities import Data
dataset_version = "1"
validation_dataset_name = "chat_validation_small"
try:
validation_data_asset = workspace_ml_client.data.get(
validation_dataset_name, version=dataset_version
)
print(f"Dataset {validation_dataset_name} already exists")
except:
print("creating dataset")
validation_data = Data(
path=f"./validation.jsonl",
type=AssetTypes.URI_FILE,
description="Validation dataset",
name=validation_dataset_name,
version="1",
)
validation_data_asset = workspace_ml_client.data.create_or_update(validation_data)
타사 모델에 대한 마켓플레이스 구독 만들기
이 단계는 모든 비 Microsoft 모델에 필요합니다. Microsoft 모델의 예로는 Phi 모델 제품군이 있습니다.
model_id_to_subscribe = "/".join(model_to_finetune.id.split("/")[:-2])
print(model_id_to_subscribe)
normalized_model_name = model_name.replace(".", "-")
from azure.ai.ml.entities import MarketplaceSubscription
subscription_name = f"{normalized_model_name}-sub"
marketplace_subscription = MarketplaceSubscription(
model_id=model_id_to_subscribe,
name=subscription_name,
)
# note: this will throw exception if the subscription already exists or subscription is not required (for example, if the model is not in the marketplace like Phi family)
try:
marketplace_subscription = (
workspace_ml_client.marketplace_subscriptions.begin_create_or_update(
marketplace_subscription
).result()
)
except Exception as ex:
print(ex)
모델 및 데이터를 입력으로 사용하여 미세 조정 작업 제출
모델을 미세 조정하는 데 필요한 매개 변수 집합은 다음과 같습니다. 각 매개 변수는 다음에서 정의됩니다.
- 모델: 미세 조정할 기본 모델입니다.
- training_data: 기본 모델을 미세 조정하기 위한 학습 데이터입니다.
- validation_data: 기본 모델을 미세 조정하기 위한 유효성 검사 데이터입니다.
- task: 수행할 작업을 미세 조정합니다. 예. 채팅 완료 미세 조정 작업에 대한 CHAT_COMPLETION.
- outputs: 등록된 모델 이름을 출력합니다.
다음 매개 변수는 선택 사항입니다.
- 하이퍼 매개 변수: 런타임에 미세 조정 동작을 제어하는 매개 변수입니다.
- 이름: 미세 조정 작업 이름
- experiment_name: 핀 튜닝 작업의 실험 이름입니다.
- display_name: 작업 표시 이름을 미세 조정합니다.
from azure.ai.ml.finetuning import FineTuningTaskType, create_finetuning_job
import uuid
guid = uuid.uuid4()
short_guid = str(guid)[:8]
display_name = f"{model_name}-display-name-{short_guid}-from-sdk"
name = f"{model_name}t-{short_guid}-from-sdk"
output_model_name_prefix = f"{model_name}-{short_guid}-from-sdk-finetuned"
experiment_name = f"{model_name}-from-sdk"
finetuning_job = create_finetuning_job(
task=FineTuningTaskType.CHAT_COMPLETION,
training_data=train_data_asset.id,
validation_data=validation_data_asset.id,
hyperparameters={
"per_device_train_batch_size": "1",
"learning_rate": "0.00002",
"num_train_epochs": "1",
},
model=model_to_finetune.id,
display_name=display_name,
name=name,
experiment_name=experiment_name,
tags={"foo_tag": "bar"},
properties={"my_property": "my_value"},
output_model_name_prefix=output_model_name_prefix,
created_job = workspace_ml_client.jobs.create_or_update(finetuning_job)
workspace_ml_client.jobs.get(created_job.name)
status = workspace_ml_client.jobs.get(created_job.name).status
import time
while True:
status = workspace_ml_client.jobs.get(created_job.name).status
print(f"Current job status: {status}")
if status in ["Failed", "Completed", "Canceled"]:
print("Job has finished with status: {0}".format(status))
break
else:
print("Job is still running. Checking again in 30 seconds.")
time.sleep(30)
finetune_model_name = created_job.outputs["registered_model"]["name"]
finetune_model_name
미세 조정된 모델 배포
미세 조정 작업이 성공하면 사용자 지정 모델을 배포할 수 있습니다.
중요합니다
사용자 지정된 모델을 배포하고 엔드포인트를 완료한 후에는 비활성 엔드포인트를 정리해야 합니다. 비활성 배포를 삭제해도 기본 사용자 지정 모델은 삭제되거나 영향을 받지 않으며 사용자 지정 모델은 언제든지 다시 배포될 수 있습니다. Azure AI Foundry 가격 책정에 설명된 대로 배포된 각 사용자 지정(미세 조정된) 모델은 완료 또는 채팅 완료 호출이 모델에 대해 이루어지는지 여부에 관계없이 시간당 호스팅 비용이 발생합니다. Azure AI Foundry를 사용하여 비용을 계획하고 관리하는 방법에 대한 자세한 내용은 Azure AI Foundry Service에 대한 비용 관리 계획의 지침을 참조하세요.
# Deploy the model as a serverless endpoint
endpoint_name = f"{normalized_model_name}-ft-{short_guid}" # Name must be unique
model_id = f"azureml://locations/{workspace.location}/workspaces/{workspace._workspace_id}/models/{finetune_model_name}/versions/1"
미세 조정을 위해 지원되는 엔터프라이즈 시나리오
표준 배포 미세 조정을 위해 여러 엔터프라이즈 시나리오가 지원됩니다. 아래 표에서는 엔터프라이즈 시나리오 내에서 원활한 작업을 보장하기 위해 사용자 스토리지 네트워킹 및 인증에 지원되는 구성을 간략하게 설명합니다.
비고
- 데이터 세트가 저장된 데이터 저장소 연결을 클릭하고 Access 세부 정보>인증 방법 설정으로 이동하여 AI Foundry를 통해 데이터 연결 인증을 변경할 수 있습니다.
- Azure Storage 설정> 허용.
- 스토리지 네트워킹은 Azure Storage >네트워킹 페이지에서 변경할 수 있습니다.
스토리지 네트워킹 | 스토리지 인증 | 데이터 연결 인증 | 지원 |
---|---|---|---|
공용 네트워크 액세스 = 사용 | 계정 키를 사용하도록 설정 | SAS/계정 키 | 예, UX 및 SDK |
공용 네트워크 액세스 = 사용 | 계정 키를 사용하지 않도록 설정 | Entra 기반 인증(자격 증명 없는) | 예, UX 및 SDK 참고: UX의 경우 스토리지 계정의 사용자 ID에 대한 Storage Blob 데이터 판독기 또는 Storage Blob 데이터 기여자를 추가하거나 계정 키/SAS 토큰을 사용하도록 연결의 인증을 변경해야 할 수 있습니다. |
선택한 가상 네트워크 및 IP 주소에서 사용 | 계정 키를 사용하도록 설정 | 계정 키 | 예, UX 및 SDK 참고: UX의 경우 브라우저를 실행하는 컴퓨팅의 IP가 선택한 목록에 있어야 합니다. |
선택한 가상 네트워크 및 IP 주소에서 사용 | 계정 키를 사용하도록 설정 | SAS | 예, UX 및 SDK 참고: UX의 경우 브라우저를 실행하는 컴퓨팅의 IP가 선택한 목록에 있어야 합니다. |
선택한 가상 네트워크 및 IP 주소에서 사용 | 계정 키를 사용하지 않도록 설정 | Entra 기반 인증(자격 증명 없는) | 예, UX 및 SDK. 참고: UX의 경우 스토리지 계정의 사용자 ID에 대한 Storage Blob 데이터 판독기 또는 Storage Blob 데이터 기여자를 추가하거나 계정 키/SAS 토큰을 사용하도록 연결의 인증을 변경해야 할 수 있습니다. 또한 브라우저를 실행하는 컴퓨팅의 IP가 선택한 목록에 있어야 합니다. |
공용 네트워크 액세스 = 사용 안 함 | 계정 키를 사용하도록 설정 | SAS/계정 키 | 예, UX 및 SDK. 참고: UX 데이터 업로드 및 제출이 작동하려면 스토리지에 대한 적절한 액세스 권한이 있는 Vnet 내에서 작업 영역에 액세스해야 합니다. |
공용 네트워크 액세스 = 사용 안 함 | 계정 키를 사용하지 않도록 설정 | Entra 기반 인증(자격 증명 없는) | 예, UX 및 SDK. 참고: UX 데이터 업로드 및 제출이 작동하려면 스토리지에 대한 적절한 액세스 권한이 있는 Vnet 내에서 작업 영역에 액세스해야 합니다. |
위의 시나리오는 관리되는 Vnet 작업 영역에서도 작동해야 합니다. 관리되는 Vnet AI Foundry 허브 설정 참조: Azure AI Foundry 허브에 대한 관리되는 네트워크를 구성하는 방법
CMK(Customer-Managed 키)는 표준 배포 미세 조정에서 지원되는 엔터프라이즈 시나리오가 아닙니다 .
작업 영역 및 스토리지에서 고유한 네트워크 설정을 최적화하는 데 문제가 있는 경우, 이는 일반적으로 네트워크 설정상의 문제를 나타냅니다.
지역 간 배포
미세 조정은 모델이 원래 미세 조정된 지역과 다른 지역에 미세 조정된 모델을 배포하도록 지원합니다. 다른 구독/지역에 배포할 수도 있습니다. 유일한 제한 사항은 새 지역에서도 미세 조정을 지원해야 하며 교차 구독을 배포할 때 배포에 대한 권한 부여 토큰을 생성하는 계정에 원본 및 대상 구독 모두에 대한 액세스 권한이 있어야 한다는 것입니다. 구독 간/지역 배포는 Python을 통해 수행할 수 있습니다.
# Create Cross region FT deployment client
from azure.ai.ml.entities import ServerlessEndpoint
from azure.ai.ml import MLClient
from azure.identity import (
DefaultAzureCredential,
InteractiveBrowserCredential,
)
try:
credential = DefaultAzureCredential()
credential.get_token("https://management.azure.com/.default")
except Exception as ex:
credential = InteractiveBrowserCredential()
try:
workspace_ml_client = MLClient.from_config(credential=credential)
except:
workspace_ml_client = MLClient(
credential,
subscription_id="<TARGET_SUBSCRIPTION_ID>",
resource_group_name="<TARGET_RESOURCE_GROUP_NAME>",
workspace_name="<TARGET_PROJECT_NAME>",
)
workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace_region = workspace.location
model_to_finetune.tags
supported_regions = model_to_finetune.tags["maas-finetuning-deploy-regions"]
supported_regions
if workspace_region in supported_regions:
print(f"Creating endpoint in the region:{workspace_region}")
serverless_endpoint = ServerlessEndpoint(name=endpoint_name, model_id=model_id)
created_endpoint = workspace_ml_client.serverless_endpoints.begin_create_or_update(
serverless_endpoint
).result()
else:
raise ValueError(
f"For the model : {model_to_finetune}, the target region: {workspace_region} is not supported for deployment, the supported regions: {supported_regions}"
)
배포된 사용자 지정 모델 사용
사용자 지정 모델이 배포되었으면 배포된 다른 모델처럼 사용할 수 있습니다. 다른 배포된 모델과 마찬가지로 온도 및 max_tokens 같은 사용자 지정 모델에서 동일한 매개 변수를 계속 사용할 수 있습니다.
endpoint = workspace_ml_client.serverless_endpoints.get(endpoint_name)
endpoint_keys = workspace_ml_client.serverless_endpoints.get_keys(endpoint_name)
auth_key = endpoint_keys.primary_key
import requests
url = f"{endpoint.scoring_uri}/v1/chat/completions"
payload = {
"max_tokens": 1024,
"messages": [
{
"content": "This script is great so far. Can you add more dialogue between Amanda and Thierry to build up their chemistry and connection?",
"role": "user",
}
],
}
headers = {"Content-Type": "application/json", "Authorization": f"{auth_key}"}
response = requests.post(url, json=payload, headers=headers)
response.json()
미세 조정된 모델 정리
모델을 완료한 후 다음 코드를 실행하여 미세 조정된 모델을 정리합니다.
workspace_ml_client.serverless_endpoints.begin_delete(endpoint_name).result()
표준 배포로 배포된 모델에 대한 비용 및 할당량 고려 사항
할당량은 배포당 관리됩니다. 각 배포에는 분당 200,000개의 토큰과 분당 1,000개의 API 요청의 속도 제한이 있습니다. 그러나 현재는 프로젝트별 모델당 하나의 배포로 제한됩니다. 현재 속도 제한이 시나리오에 충분하지 않은 경우 Microsoft Azure 지원에 문의하세요.
Microsoft 모델 비용
Microsoft 모델(예: Phi-3 모델)을 표준 배포로 배포할 때 배포 마법사의 가격 책정 및 조건 탭에서 가격 책정 정보를 찾을 수 있습니다.
Microsoft 이외의 모델 비용
표준 배포로 배포된 비 Microsoft 모델은 Azure Marketplace를 통해 제공되며 사용하기 위해 Azure AI Foundry와 통합됩니다. 이러한 모델을 배포하거나 미세 조정할 때 Azure Marketplace 가격 책정을 찾을 수 있습니다.
프로젝트가 Azure Marketplace에서 지정된 제품을 구독할 때마다 사용량과 관련된 비용을 추적하기 위해 새 리소스가 만들어집니다. 유추 및 미세 조정과 관련된 비용을 추적하는 데는 동일한 리소스가 사용되지만 여러 미터를 사용하여 각 시나리오를 독립적으로 추적할 수 있습니다.
비용을 추적하는 방법에 대한 자세한 내용은 Azure Marketplace를 통해 제공되는 모델의 비용 모니터링을 참조 하세요.
샘플 노트
이 샘플 Notebook 을 사용하여 독립 실행형 미세 조정 작업을 만들어 Samsum 데이터 세트를 사용하여 두 사람 간의 대화를 요약하는 모델의 기능을 향상시킬 수 있습니다. 활용되는 학습 데이터는 ultrachat_200k 데이터 세트로, 감독된 미세 조정(sft) 및 세대 순위(gen)에 적합한 네 개의 분할로 나뉩니다. Notebook은 채팅 완료 작업에 사용 가능한 Azure AI 모델을 사용합니다(Notebook에 사용된 모델과 다른 모델을 사용하려는 경우 모델 이름을 바꿀 수 있음). Notebook에는 필수 구성 요소 설정, 미세 조정할 모델 선택, 학습 및 유효성 검사 데이터 세트 만들기, 미세 조정 작업 구성 및 제출, 마지막으로 샘플 유추를 위해 미세 조정된 모델을 사용하여 서버리스 배포 만들기가 포함됩니다.
샘플 CLI
또한 이 샘플 CLI 를 사용하여 독립 실행형 미세 조정 작업을 만들어 데이터 세트를 사용하여 두 사람 간의 대화를 요약하는 모델의 기능을 향상시킬 수 있습니다.
type: finetuning
name: "Phi-3-mini-4k-instruct-with-amlcompute"
experiment_name: "Phi-3-mini-4k-instruct-finetuning-experiment"
display_name: "Phi-3-mini-4k-instruct-display-name"
task: chat_completion
model_provider: custom
model:
path: "azureml://registries/azureml/models/Phi-3-mini-4k-instruct/versions/14"
type: mlflow_model
training_data: train.jsonl
validation_data:
path: validation.jsonl
type: uri_file
hyperparameters:
num_train_epochs: "1"
per_device_train_batch_size: "1"
learning_rate: "0.00002"
properties:
my_property: "my_value"
tags:
foo_tag: "bar"
outputs:
registered_model:
name: "Phi-3-mini-4k-instruct-finetuned-model"
type: mlflow_model
사용되는 학습 데이터는 SDK Notebook에 설명된 것과 동일합니다. CLI는 채팅 완료 작업에 사용 가능한 Azure AI 모델을 사용합니다. CLI 샘플의 모델과 다른 모델을 사용하려는 경우 그에 따라 '모델 경로'와 같은 인수를 업데이트할 수 있습니다.
콘텐츠 필터링
표준 배포 모델은 Azure AI 콘텐츠 안전으로 보호됩니다. 실시간 엔드포인트에 배포되는 경우 이 기능을 옵트아웃할 수 있습니다. Azure AI Content Safety를 사용하도록 설정하면 프롬프트와 완료 모두 유해한 콘텐츠의 출력을 감지하고 방지하기 위한 분류 모델의 앙상블을 통과합니다. 콘텐츠 필터링 시스템은 입력 프롬프트와 출력 완료 모두에서 잠재적으로 유해한 콘텐츠의 특정 범주를 탐지하고 조치를 취합니다. Azure AI 콘텐츠 보안에 대해 자세히 알아보기.