มีอะไรใหม่! |
---|
รุ่นล่าสุด: 15 พ.ย. 2024 kaito v0.3.2 |
รุ่นแรก: 15 พ.ย. 2023 kaito v0.1.0 |
kaito เป็นตัวดำเนินการที่ทำให้การอนุมานโมเดล AI/ML หรือการปรับปริมาณงานในคลัสเตอร์ Kubernetes เป็นแบบอัตโนมัติ โมเดลเป้าหมายคือโมเดลขนาดใหญ่แบบโอเพ่นซอร์สยอดนิยม เช่น Falcon และ phi-3 kaito มีความแตกต่างที่สำคัญดังต่อไปนี้เมื่อเปรียบเทียบกับวิธีการปรับใช้โมเดลกระแสหลักส่วนใหญ่ที่สร้างขึ้นบนโครงสร้างพื้นฐานของเครื่องเสมือน:
การใช้ kaito ช่วยให้เวิร์กโฟลว์ของการเริ่มต้นโมเดลการอนุมาน AI ขนาดใหญ่ใน Kubernetes ง่ายขึ้นมาก
kaito เป็นไปตามรูปแบบการออกแบบ Kubernetes Custom Resource Definition (CRD)/คอนโทรลเลอร์แบบคลาสสิก ผู้ใช้จัดการทรัพยากรที่กำหนดเองของ workspace
ซึ่งอธิบายข้อกำหนดของ GPU และข้อกำหนดการอนุมานหรือการปรับแต่ง ตัวควบคุม kaito จะทำให้การปรับใช้เป็นแบบอัตโนมัติโดยการปรับยอดทรัพยากรที่กำหนดเองของ workspace
รูปด้านบนนำเสนอภาพรวมสถาปัตยกรรม kaito ส่วนประกอบหลักประกอบด้วย:
workspace
สร้างทรัพยากรที่กำหนดเองของ machine
(อธิบายไว้ด้านล่าง) เพื่อทริกเกอร์การจัดเตรียมโหนดอัตโนมัติ และสร้างการอนุมานหรือปรับปริมาณงาน ( deployment
statefulset
หรือ job
) ตามการกำหนดค่าที่ตั้งไว้ล่วงหน้าของโมเดลmachine
ที่สร้างจาก Karpenter เพื่อโต้ตอบกับตัวควบคุมพื้นที่ทำงาน ทำงานร่วมกับ Azure Resource Manager REST API เพื่อเพิ่มโหนด GPU ใหม่ให้กับคลัสเตอร์ AKS หรือ AKS Arcหมายเหตุ: 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 คลัสเตอร์ของบริการอนุมาน และใช้ Temporal curl
Pod เพื่อทดสอบตำแหน่งข้อมูลบริการในคลัสเตอร์
$ 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 รองรับการปรับแต่งโมเดลอย่างละเอียดและการใช้อะแดปเตอร์ที่ได้รับการปรับแต่งอย่างละเอียดในบริการอนุมาน โปรดดูเอกสารการปรับแต่งและเอกสารการอนุมานสำหรับข้อมูลเพิ่มเติม
สำหรับการใช้โหนดที่ต้องการ ตรวจสอบให้แน่ใจว่าโหนดมีป้ายกำกับที่ระบุใน labelSelector ใต้ matchLabels ตัวอย่างเช่น หาก labelSelector ของคุณคือ:
labelSelector:
matchLabels:
apps: falcon-7b
จากนั้นโหนดควรมีป้ายกำกับ: apps=falcon-7b
เมื่อใช้โมเดลสาธารณะที่โฮสต์ ผู้ใช้สามารถลบปริมาณงานการอนุมานที่มีอยู่ ( Deployment
of StatefulSet
) ได้ด้วยตนเอง และตัวควบคุมพื้นที่ทำงานจะสร้างใหม่ด้วยการกำหนดค่าล่วงหน้าล่าสุด (เช่น เวอร์ชันอิมเมจ) ที่กำหนดไว้ในรีลีสปัจจุบัน สำหรับโมเดลส่วนตัว ขอแนะนำให้สร้างพื้นที่ทำงานใหม่ด้วยเวอร์ชันอิมเมจใหม่ใน Spec.
kaito มีความสามารถที่จำกัดในการแทนที่การกำหนดค่าที่ตั้งไว้ล่วงหน้าสำหรับรุ่นที่ใช้รันไทม์ transformer
ด้วยตนเอง หากต้องการอัปเดตพารามิเตอร์สำหรับโมเดลที่ปรับใช้ ให้ทำการ kubectl edit
กับปริมาณงาน ซึ่งอาจเป็น StatefulSet
หรือ Deployment
ตัวอย่างเช่น หากต้องการเปิดใช้งานการหาปริมาณ 4 บิตในการปรับใช้คำสั่ง falcon-7b-instruct
คุณจะต้องดำเนินการ:
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
: ความละเอียดเชิงปริมาณของโมเดลหากคุณต้องการปรับแต่งพารามิเตอร์อื่นๆ กรุณาแจ้งปัญหาเพื่อรวมไว้ในอนาคต
ความแตกต่างหลักอยู่ที่กรณีการใช้งานที่ตั้งใจไว้ โมเดลคำสั่งเป็นเวอร์ชันที่ได้รับการปรับแต่งอย่างละเอียดซึ่งปรับให้เหมาะกับแอปพลิเคชันแชทเชิงโต้ตอบ โดยทั่วไปแล้วจะเป็นตัวเลือกที่ต้องการสำหรับการใช้งานส่วนใหญ่เนื่องจากประสิทธิภาพที่เพิ่มขึ้นในบริบทการสนทนา ในทางกลับกัน โมเดลที่ไม่ใช่คำสั่งหรือโมเดลดิบ ได้รับการออกแบบมาเพื่อการปรับแต่งเพิ่มเติม
อ่านเพิ่มเติม
โครงการนี้ยินดีรับการสนับสนุนและข้อเสนอแนะ การบริจาคกำหนดให้คุณต้องยอมรับข้อตกลงใบอนุญาตผู้ร่วมให้ข้อมูล (CLA) โดยประกาศว่าคุณมีสิทธิ์ที่จะให้สิทธิ์แก่เราในการใช้การบริจาคของคุณจริงๆ สำหรับรายละเอียด โปรดไปที่ CLA สำหรับ CNCF
เมื่อคุณส่งคำขอดึง บอท CLA จะกำหนดโดยอัตโนมัติว่าคุณจำเป็นต้องจัดเตรียม CLA และตกแต่ง PR อย่างเหมาะสมหรือไม่ (เช่น การตรวจสอบสถานะ ความคิดเห็น) เพียงทำตามคำแนะนำที่ได้รับจากบอท คุณจะต้องทำสิ่งนี้เพียงครั้งเดียวกับ repos ทั้งหมดโดยใช้ CLA ของเรา
โครงการนี้ได้นำ CLA สำหรับ CNCF มาใช้ โปรดลงนาม CLA ด้วยระบบอิเล็กทรอนิกส์ผ่าน https://easycla.lfx.linuxfoundation.org หากคุณพบปัญหา คุณสามารถส่งตั๋วกับกลุ่ม Linux Foundation ID ผ่านทางเว็บไซต์ Linux Foundation Support
ดูใบอนุญาต MIT
kaito ได้นำหลักจรรยาบรรณของ Cloud Native Compute Foundation มาใช้ สำหรับข้อมูลเพิ่มเติม โปรดดูจรรยาบรรณของ kaito
" kaito devs" kaito [email protected]