Apa yang BARU! |
---|
Rilis Terbaru: 15 November 2024. kaito v0.3.2. |
Rilis Pertama: 15 November 2023. kaito v0.1.0. |
kaito adalah operator yang mengotomatiskan inferensi model AI/ML atau menyetel beban kerja di cluster Kubernetes. Model targetnya adalah model besar bersumber terbuka yang populer seperti falcon dan phi-3. kaito memiliki perbedaan utama berikut dibandingkan dengan sebagian besar metodologi penerapan model utama yang dibangun di atas infrastruktur mesin virtual:
Dengan menggunakan kaito , alur kerja penerapan model inferensi AI besar di Kubernetes menjadi lebih sederhana.
kaito mengikuti pola desain pengontrol/Definisi Sumber Daya Kustom (CRD) Kubernetes klasik. Pengguna mengelola sumber daya kustom workspace
yang menjelaskan persyaratan GPU dan spesifikasi inferensi atau penyetelan. pengontrol kaito akan mengotomatiskan penerapan dengan merekonsiliasi sumber daya kustom workspace
.
Gambar di atas menyajikan gambaran arsitektur kaito . Komponen utamanya terdiri dari:
workspace
, membuat sumber daya kustom machine
(dijelaskan di bawah) untuk memicu penyediaan otomatis node, dan membuat inferensi atau penyetelan beban kerja ( deployment
, statefulset
, atau job
) berdasarkan konfigurasi preset model.machine
CRD yang berasal dari Karpenter untuk berinteraksi dengan pengontrol ruang kerja. Ini terintegrasi dengan REST API Azure Resource Manager untuk menambahkan node GPU baru ke kluster AKS atau AKS Arc.Catatan: Penyedia GPU adalah komponen sumber terbuka. Itu dapat digantikan oleh pengontrol lain jika mereka mendukung API inti Karpenter.
Silakan periksa panduan instalasi di sini untuk penerapan menggunakan Azure CLI dan di sini untuk penerapan menggunakan Terraform.
Setelah menginstal kaito , seseorang dapat mencoba perintah berikut untuk memulai layanan inferensi 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
Status ruang kerja dapat dilacak dengan menjalankan perintah berikut. Ketika kolom WORKSPACEREADY menjadi True
, model telah berhasil diterapkan.
$ kubectl get workspace workspace-falcon-7b
NAME INSTANCE RESOURCEREADY INFERENCEREADY JOBSTARTED WORKSPACESUCCEEDED AGE
workspace-falcon-7b Standard_NC12s_v3 True True True True 10m
Selanjutnya, seseorang dapat menemukan ip klaster layanan inferensi dan menggunakan pod curl
temporal untuk menguji titik akhir layanan di klaster.
$ 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 " } "
Penggunaan detail untuk model yang didukung kaito dapat ditemukan di SINI . Jika pengguna ingin menerapkan model terkontainer mereka sendiri, mereka dapat menyediakan templat pod di bidang inference
sumber daya kustom ruang kerja (lihat definisi API untuk detailnya). Pengontrol akan membuat beban kerja penerapan menggunakan semua node GPU yang disediakan. Perhatikan bahwa saat ini pengontrol TIDAK menangani peningkatan model otomatis. Ini hanya membuat beban kerja inferensi berdasarkan konfigurasi preset jika beban kerja tidak ada.
Jumlah model yang didukung di kaito terus bertambah! Silakan periksa dokumen ini untuk melihat cara menambahkan model baru yang didukung.
Dimulai dengan versi v0.3.0, kaito mendukung penyempurnaan model dan penggunaan adaptor yang disempurnakan dalam layanan inferensi. Lihat dokumen penyetelan dan dokumen inferensi untuk informasi lebih lanjut.
Untuk menggunakan node pilihan, pastikan node tersebut memiliki label yang ditentukan dalam labelSelector di bawah matchLabels. Misalnya, jika labelSelector Anda adalah:
labelSelector:
matchLabels:
apps: falcon-7b
Maka node tersebut harus memiliki label: apps=falcon-7b
.
Saat menggunakan model publik yang dihosting, pengguna dapat menghapus beban kerja inferensi yang ada ( Deployment
of StatefulSet
) secara manual, dan pengontrol ruang kerja akan membuat yang baru dengan konfigurasi preset terbaru (misalnya, versi gambar) yang ditentukan dalam rilis saat ini. Untuk model privat, disarankan untuk membuat ruang kerja baru dengan versi gambar baru di Spesifikasi.
kaito memberikan kemampuan terbatas untuk mengganti konfigurasi preset untuk model yang menggunakan runtime transformer
secara manual. Untuk memperbarui parameter model yang diterapkan, lakukan kubectl edit
terhadap beban kerja, yang dapat berupa StatefulSet
atau Deployment
. Misalnya, untuk mengaktifkan kuantisasi 4-bit pada penerapan falcon-7b-instruct
, Anda akan menjalankan:
kubectl edit deployment workspace-falcon-7b-instruct
Dalam spesifikasi penerapan, temukan dan ubah bidang perintah.
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
Saat ini, kami mengizinkan pengguna untuk mengubah parameter berikut secara manual:
pipeline
: Untuk model pembuatan teks, ini dapat berupa text-generation
atau conversational
.load_in_4bit
atau load_in_8bit
: Resolusi kuantisasi model.Jika Anda perlu menyesuaikan parameter lain, silakan ajukan masalah untuk kemungkinan penyertaan di masa mendatang.
Perbedaan utamanya terletak pada kasus penggunaan yang dimaksudkan. Model instruksikan adalah versi yang disempurnakan dan dioptimalkan untuk aplikasi obrolan interaktif. Mereka biasanya merupakan pilihan yang lebih disukai untuk sebagian besar penerapan karena peningkatan kinerjanya dalam konteks percakapan. Di sisi lain, model non-instruksikan, atau model mentah, dirancang untuk penyesuaian lebih lanjut.
Baca selengkapnya
Proyek ini menyambut baik kontribusi dan saran. Kontribusi tersebut mengharuskan Anda menyetujui Perjanjian Lisensi Kontributor (CLA) yang menyatakan bahwa Anda berhak, dan memang benar, memberi kami hak untuk menggunakan kontribusi Anda. Untuk detailnya, kunjungi CLA untuk CNCF.
Saat Anda mengirimkan permintaan tarik, bot CLA akan secara otomatis menentukan apakah Anda perlu memberikan CLA dan menghiasi PR dengan tepat (misalnya, pemeriksaan status, komentar). Cukup ikuti instruksi yang diberikan oleh bot. Anda hanya perlu melakukan ini sekali di seluruh repo menggunakan CLA kami.
Proyek ini telah mengadopsi CLA untuk CNCF, harap menandatangani CLA secara elektronik melalui https://easycla.lfx.linuxfoundation.org. Jika Anda mengalami masalah, Anda dapat mengirimkan tiket dengan grup ID Linux Foundation melalui situs web Dukungan Linux Foundation.
Lihat Lisensi MIT.
kaito telah mengadopsi Kode Etik Cloud Native Compute Foundation. Untuk informasi lebih lanjut lihat Kode Etik kaito .
" kaito devs" kaito [email protected]