다음을 통해 공유


Azure 앱 Service의 사이드카 컨테이너에서 로컬 SLM 실행

이 자습서에서는 SLM(작은 언어 모델)을 Azure 앱 Service에서 사이드카 컨테이너로 실행하고 기본 Linux 컨테이너에서 액세스하는 방법에 대해 알아봅니다. 이 자습서의 끝부분에는 App Service에서 실행되는 패션 도우미 채팅 애플리케이션이 있고 로컬로 모델에 액세스하게 됩니다.

Azure 앱 Service의 패션 도우미 채팅 앱을 보여 주는 스크린샷

인터넷을 통해 비즈니스 데이터를 클라우드 기반 AI 챗봇 서비스로 보내지 않고 챗봇 애플리케이션을 실행하려는 경우 SLM을 로컬로 실행하는 것이 좋습니다.

  • 고성능 가격 책정 계층: App Service는 대규모로 AI 모델을 실행하는 데 도움이 되는 고성능 가격 책정 계층을 제공합니다.
  • 문제 분리: 사이드카에서 SLM을 실행하면 AI 논리를 애플리케이션 논리와 분리할 수 있습니다. 애플리케이션에 영향을 주지 않고 모델을 업그레이드하는 등 불연속 구성 요소를 별도로 유지할 수 있습니다.

필수 조건

성능 고려 사항

AI 모델은 상당한 리소스를 사용하므로 특정 모델을 실행할 수 있는 충분한 vCPU 및 메모리를 제공하는 가격 책정 계층을 선택합니다. App Service 가격 책정 계층은 CPU 전용 계층이므로 실제로는 CPU 최적화 모델을 사용해야 합니다.

이 자습서에서는 포옹 얼굴4K 컨텍스트 길이가 있는 Phi-3 미니 모델을 사용합니다. 제한된 리소스로 실행되도록 설계되었으며 많은 일반적인 시나리오에 대해 강력한 수학 및 논리적 추론을 제공합니다. CPU 최적화 버전도 함께 제공됩니다. App Service에서 모든 프리미엄 계층에서 모델을 테스트하고 P2mv3 계층에서 성능이 좋은 것으로 나타났습니다. 요구 사항이 허용되는 경우 하위 계층에서 실행할 수 있습니다.

1. GitHub Codespaces에서 샘플 검사

  1. GitHub 계정에 로그인하고 https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar/fork.
  2. 포크 만들기를 선택합니다.
  3. 코드>기본 코드스페이스 만들기를 선택합니다. 코드스페이스를 설정하는 데 몇 분 정도 걸립니다.

샘플 리포지토리에는 다음과 같은 콘텐츠가 있습니다.

콘텐츠 설명
src/phi-3-sidecar Phi-3 미니 모델에 대한 Python FastAPI 엔드포인트를 실행하는 Docker 이미지 코드입니다. Phi-3 사이드카 컨테이너는 어떻게 작동하나요?
src/webapp 프런트 엔드 .NET Blazor 애플리케이션입니다. 프런트 엔드 앱의 작동 방식을 확인 하세요.
인프라 Azure에서 .NET 웹앱을 배포하기 위한 코드로서의 인프라. Azure 개발자 CLI 템플릿 만들기 개요를 참조하세요.
azure.yaml Blazor 애플리케이션을 App Service에 배포하는 Azure 개발자 CLI 구성입니다. Azure 개발자 CLI 템플릿 만들기 개요를 참조하세요.

2. 프런트 엔드 애플리케이션 배포

  1. azd auth login 명령을 사용하고 프롬프트에 따라 Azure 계정에 로그인합니다.

    azd auth login
    
  2. App Service 앱을 만들고 다음 명령을 사용하여 코드를 배포합니다 azd up .

    azd up
    

    azd up 명령을 완료하는 데 몇 분 정도 걸릴 수 있습니다. azd up는 프로젝트의 Bicep 파일을 사용하여 P2mv3 가격 책정 계층에서 App Service 앱을 만든 다음 .NET 앱을 src/webapp배포합니다.

3. Phi-3 사이드카 추가

이 섹션에서는 이미 Phi-3 Docker 이미지를 빌드하고 레지스트리에 업로드했다고 가정합니다. 대신 Microsoft Container Registry에서 미리 업로드된 이미지를 사용합니다. 이미지를 직접 빌드하고 업로드하려면 Phi-3 Docker 이미지를 로컬로 빌드하는 방법을 참조 하세요.

  1. Azure Portal에서 앱의 관리 페이지로 이동합니다.
  2. 앱의 관리 페이지의 왼쪽 메뉴에서 배포 센터를 선택합니다.
  3. 앱과 함께 실행할 컨테이너를 추가하는 데 관심이 있는 배너 를 선택하세요? 사용해 보려면 여기를 클릭하십시오.
  4. 페이지가 다시 로드되면 컨테이너(새) 탭을 선택합니다.
  5. 다음과 같이 추가를 선택하고 새 컨테이너를 구성합니다.
    • 이름: phi-3
    • 이미지 원본: 기타 컨테이너 레지스트리
    • 이미지 유형: 공용
    • 레지스트리 서버 URL: mcr.microsoft.com
    • 이미지 및 태그: appsvc/docs/sidecars/sample-experiment:phi3-python-1.0
  6. 적용을 선택합니다.

4. 실행 중인 앱 확인

  1. AZD 출력에서 앱의 URL을 찾아 브라우저에서 탐색합니다. URL은 AZD 출력에서 다음과 같습니다.

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: https://<app-name>.azurewebsites.net/
     
  2. 제품을 선택하고, 원하는 질문을 하고, 보내기를 선택합니다.

    App Service 내에서 실행되는 AI 챗봇을 보여 주는 스크린샷.

자주 묻는 질문

Phi-3 사이드카 컨테이너는 어떻게 작동하나요?

Dockerfile에 지정된 대로 포트 8000에서 수신 대기하는 FastAPI 애플리케이션을 실행합니다.

애플리케이션은 ONNX 런타임을 사용하여 Phi-3 모델을 로드한 다음, HTTP POST 데이터를 모델에 전달하고 모델에서 클라이언트로 응답을 다시 스트리밍합니다. 자세한 내용은 model_api.py 참조하세요.

프런트 엔드 앱은 어떻게 작동하나요?

RAG(기본 검색 보강 세대) 애플리케이션입니다. 다음의 FastAPI 엔드포인트(at localhost:8000) Send()에 세 가지 정보를 보내는 Razor 페이지를 보여 줍니다.

  • 선택한 제품
  • 검색된 제품 설명 데이터
  • 사용자가 제출한 메시지

그런 다음 스트리밍된 응답을 페이지에 출력합니다. 자세한 내용은 Home.razor를 참조하세요.

Phi-3 Docker 이미지를 로컬로 빌드하는 방법

사이드카 이미지를 직접 빌드하려면 컴퓨터에 Docker Desktop을 로컬로 설치해야 합니다.

  1. 리포지토리를 로컬로 복제합니다.

    git clone https://github.com/Azure-Samples/ai-slm-in-app-service-sidecar
    cd ai-slm-in-app-service-sidecar
    
  2. Phi-3 이미지의 원본 디렉터리로 변경하고 모델을 로컬로 다운로드합니다.

    cd src/phi-3-sidecar/
    huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --local-dir ./Phi-3-mini-4k-instruct-onnx
    

    Dockerfile은 ./Phi-3-mini-4k-instruct-onnx에서 모델을 복사하도록 구성됩니다.

  3. Docker 이미지를 빌드합니다. 예시:

    docker build --tag phi-3 .
    

빌드된 이미지를 Azure Container Registry에 업로드하려면 Docker CLI를 사용하여 Azure Container Registry에 첫 번째 이미지 푸시를 참조하세요.

추가 리소스