새로운 기능은 무엇입니까? |
---|
최신 릴리스: 2024년 11월 15일. kaito v0.3.2. |
첫 번째 릴리스: 2023년 11월 15일. kaito v0.1.0. |
kaito 는 Kubernetes 클러스터에서 AI/ML 모델 추론 또는 튜닝 워크로드를 자동화하는 연산자입니다. 대상 모델은 Falcon, phi-3 등 인기 오픈소스 대형 모델이다. kaito 가상 머신 인프라를 기반으로 구축된 대부분의 주류 모델 배포 방법론과 비교하여 다음과 같은 주요 차이점을 가지고 있습니다.
kaito 사용하면 Kubernetes에서 대규모 AI 추론 모델을 온보딩하는 워크플로가 크게 단순화됩니다.
kaito 클래식 Kubernetes CRD(Custom Resource Definition)/컨트롤러 디자인 패턴을 따릅니다. 사용자는 GPU 요구 사항과 추론 또는 튜닝 사양을 설명하는 workspace
지정 리소스를 관리합니다. kaito 컨트롤러는 workspace
사용자 지정 리소스를 조정하여 배포를 자동화합니다.
위 그림은 kaito 아키텍처 개요를 보여줍니다. 주요 구성 요소는 다음과 같습니다.
workspace
지정 리소스를 조정하고, 노드 자동 프로비저닝을 트리거하는 machine
(아래 설명) 사용자 지정 리소스를 생성하고, 모델 사전 설정 구성을 기반으로 추론 또는 조정 워크로드( deployment
, statefulset
또는 job
)를 생성합니다.machine
CRD를 사용하여 작업 공간 컨트롤러와 상호 작용합니다. Azure Resource Manager REST API와 통합되어 AKS 또는 AKS Arc 클러스터에 새 GPU 노드를 추가합니다.참고: gpu-provisioner는 오픈 소스 구성 요소입니다. Karpenter-core API를 지원하는 경우 다른 컨트롤러로 대체할 수 있습니다.
Azure CLI를 사용한 배포의 경우 여기에서, Terraform을 사용한 배포의 경우 여기에서 설치 지침을 확인하세요.
kaito 설치한 후 다음 명령을 사용하여 falcon-7b 추론 서비스를 시작할 수 있습니다.
$ cat examples/inference/ kaito _workspace_falcon_7b.yaml
apiVersion: kaito .sh/v1alpha1
kind: Workspace
metadata:
name: workspace-falcon-7b
resource:
instanceType: " Standard_NC12s_v3 "
labelSelector:
matchLabels:
apps: falcon-7b
inference:
preset:
name: " falcon-7b "
$ kubectl apply -f examples/inference/ kaito _workspace_falcon_7b.yaml
작업공간 상태는 다음 명령을 실행하여 추적할 수 있습니다. WORKSPACEREADY 열이 True
되면 모델이 성공적으로 배포된 것입니다.
$ kubectl get workspace workspace-falcon-7b
NAME INSTANCE RESOURCEREADY INFERENCEREADY JOBSTARTED WORKSPACESUCCEEDED AGE
workspace-falcon-7b Standard_NC12s_v3 True True True True 10m
다음으로 추론 서비스의 클러스터 IP를 찾고 임시 curl
포드를 사용하여 클러스터의 서비스 엔드포인트를 테스트할 수 있습니다.
$ kubectl get svc workspace-falcon-7b
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
workspace-falcon-7b ClusterIP < CLUSTERIP > < none > 80/TCP,29500/TCP 10m
export CLUSTERIP= $( kubectl get svc workspace-falcon-7b -o jsonpath= " {.spec.clusterIPs[0]} " )
$ kubectl run -it --rm --restart=Never curl --image=curlimages/curl -- curl -X POST http:// $CLUSTERIP /chat -H " accept: application/json " -H " Content-Type: application/json " -d " { " prompt " : " YOUR QUESTION HERE " } "
kaito 지원 모델의 자세한 사용법은 여기 에서 확인할 수 있습니다. 사용자가 자신의 컨테이너화된 모델을 배포하려는 경우 작업 영역 사용자 지정 리소스의 inference
필드에 포드 템플릿을 제공할 수 있습니다(자세한 내용은 API 정의 참조). 컨트롤러는 프로비저닝된 모든 GPU 노드를 사용하여 배포 워크로드를 생성합니다. 현재 컨트롤러는 자동 모델 업그레이드를 처리하지 않습니다 . 워크로드가 존재하지 않는 경우에만 미리 설정된 구성을 기반으로 추론 워크로드를 생성합니다.
kaito 에서 지원되는 모델이 늘어나고 있습니다! 새로운 지원 모델을 추가하는 방법을 보려면 이 문서를 확인하세요.
버전 v0.3.0부터 kaito 추론 서비스에서 모델 미세 조정 및 미세 조정된 어댑터 사용을 지원합니다. 자세한 내용은 튜닝 문서 및 추론 문서를 참조하세요.
선호 노드를 사용하려면 해당 노드에 matchLabels 아래의 labelSelector에 지정된 라벨이 있는지 확인하세요. 예를 들어 labelSelector가 다음과 같은 경우:
labelSelector:
matchLabels:
apps: falcon-7b
그런 다음 노드에는 apps=falcon-7b
라벨이 있어야 합니다.
호스팅 공개 모델을 사용할 때 사용자는 기존 추론 워크로드( StatefulSet
Deployment
)를 수동으로 삭제할 수 있으며, 작업 공간 컨트롤러는 현재 릴리스에 정의된 최신 사전 설정 구성(예: 이미지 버전)을 사용하여 새 워크로드를 생성합니다. 프라이빗 모델의 경우 Spec.에서 새 이미지 버전으로 새 작업 공간을 만드는 것이 좋습니다.
kaito transformer
런타임을 수동으로 사용하는 모델에 대해 사전 설정 구성을 재정의하는 제한된 기능을 제공합니다. 배포된 모델의 매개변수를 업데이트하려면 StatefulSet
또는 Deployment
일 수 있는 워크로드에 대해 kubectl edit
수행합니다. 예를 들어 falcon-7b-instruct
배포에서 4비트 양자화를 활성화하려면 다음을 실행합니다.
kubectl edit deployment workspace-falcon-7b-instruct
배포 사양 내에서 명령 필드를 찾아 수정합니다.
accelerate launch --num_processes 1 --num_machines 1 --machine_rank 0 --gpu_ids all inference_api.py --pipeline text-generation --torch_dtype bfloat16
accelerate launch --num_processes 1 --num_machines 1 --machine_rank 0 --gpu_ids all inference_api.py --pipeline text-generation --torch_dtype bfloat16 --load_in_4bit
현재 우리는 사용자가 다음 매개변수를 수동으로 변경할 수 있도록 허용합니다.
pipeline
: 텍스트 생성 모델의 경우 이는 text-generation
또는 conversational
수 있습니다.load_in_4bit
또는 load_in_8bit
: 모델 양자화 해상도.다른 매개변수를 맞춤설정해야 하는 경우 향후 포함될 수 있도록 문제를 제출해 주시기 바랍니다.
주요 차이점은 의도된 사용 사례에 있습니다. Instruct 모델은 대화형 채팅 애플리케이션에 최적화된 미세 조정 버전입니다. 대화형 컨텍스트에서 향상된 성능으로 인해 일반적으로 대부분의 구현에서 선호되는 선택입니다. 반면, 비지시 모델 또는 원시 모델은 추가 미세 조정을 위해 설계되었습니다.
더 읽어보세요
이 프로젝트는 기여와 제안을 환영합니다. 기여를 하려면 귀하가 귀하의 기여를 사용할 권리가 있고 실제로 당사에 부여할 권리가 있음을 선언하는 기여자 라이센스 계약(CLA)에 동의해야 합니다. 자세한 내용은 CNCF용 CLA를 참조하세요.
끌어오기 요청을 제출하면 CLA 봇이 자동으로 CLA 제공이 필요한지 여부를 결정하고 PR을 적절하게 장식합니다(예: 상태 확인, 댓글). 봇이 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하여 모든 저장소에서 이 작업을 한 번만 수행하면 됩니다.
이 프로젝트는 CNCF용 CLA를 채택했습니다. https://easycla.lfx.linuxfoundation.org를 통해 CLA에 전자적으로 서명하세요. 문제가 발생하는 경우 Linux Foundation 지원 웹 사이트를 통해 Linux Foundation ID 그룹이 포함된 티켓을 제출할 수 있습니다.
MIT 라이선스를 참조하세요.
kaito Cloud Native Compute Foundation 행동 강령을 채택했습니다. 자세한 내용은 kaito 행동강령을 참조하세요.
" kaito 개발자" kaito [email protected]