View a markdown version of this page

Dapatkan rekomendasi untuk model dengan adaptor LoRa - Amazon SageMaker AI

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Dapatkan rekomendasi untuk model dengan adaptor LoRa

Low-Rank Adaptasi (LoRa) adalah teknik penyetelan hemat parameter yang melatih satu set kecil bobot adaptor di atas model dasar beku. Anda dapat melayani banyak adaptor yang berbagi model dasar tunggal pada satu titik akhir. Ini lebih hemat biaya daripada menerapkan salinan model terpisah untuk setiap varian yang disetel dengan baik.

Saat Anda menambahkan adaptor ke pekerjaan rekomendasi, SageMaker AI mengukur dan mengukur penerapan multi-adaptor. Penerapan ini adalah model dasar tunggal dengan satu Komponen inferensi per adaptor pada titik akhir yang sama. Rekomendasi memperhitungkan memori tambahan yang dibutuhkan adaptor, sehingga SageMaker AI memvalidasi konfigurasi yang dikembalikan terhadap model dasar dan adaptor bersama-sama.

Prasyarat

Selain untuk pekerjaan rekomendasi, Anda memerlukan yang berikut untuk menyertakan adaptor: Prasyarat

  • 1—10 adaptor LoRa, masing-masing dilatih terhadap model dasar yang Anda tentukan. ModelSource

  • Setiap adaptor dalam format PEFT. Lokasi adaptor harus berisi adapter_config.json file dengan peringkat positif (r), dan berkas berat adaptor (.safetensorsatau.bin).

  • Semua adaptor disediakan dalam satu bentuk: baik di Amazon S3, atau sebagai paket model SageMaker AI terdaftar. Anda tidak dapat mencampur dua bentuk dalam satu pekerjaan.

SageMaker AI membaca adaptor Anda dengan peran eksekusi IAM yang Anda berikan. RoleArn Peran harus dapat membaca (s3:GetObjectdans3:ListBucket) lokasi Amazon S3 dari setiap adaptor. Ini adalah izin yang sama yang digunakan untuk artefak model dasar Anda. Jika Anda menyediakan adaptor sebagai paket model, peran juga sagemaker:DescribeModelPackage diperlukan pada setiap paket sehingga SageMaker AI dapat menyelesaikan lokasi Amazon S3 adaptor.

Persyaratan dan batasan

Persyaratan dan batasan berikut berlaku saat Anda menambahkan adaptor ke pekerjaan rekomendasi:

  • Satu formulir sumber per pekerjaan. AdapterSourceadalah serikat pekerja. Atur tepat salah satu dari S3Uris atauModelPackageArns. SageMaker AI menolak pekerjaan yang menetapkan kedua bidang atau tidak ada bidang.

  • Peringkat adaptor. Tidak ada peringkat adaptor yang dapat melebihi 512, peringkat LoRa terbesar yang vLLM didukung mesin servis. Untuk informasi lebih lanjut, lihat catatan diMenambahkan adaptor ke pekerjaan rekomendasi.

Menambahkan adaptor ke pekerjaan rekomendasi

Untuk menyertakan adaptor, tambahkan AdapterSource objek opsional ke CreateAIRecommendationJob permintaan Anda. AdapterSourceadalah penyatuan: atur tepat salah satu bidang berikut, masing-masing daftar entri adaptor 1—10:

S3Uris

Daftar {"AdapterId": ..., "S3Uri": ...} entri. Gunakan formulir ini untuk adaptor yang Anda buat dengan pipa PEFT Anda sendiri atau sumber terbuka. Masing-masing S3Uri adalah awalan Amazon S3 yang menyimpan file adaptor adapter_config.json dan berat.

ModelPackageArns

Daftar {"AdapterId": ..., "ModelPackageArn": ...} entri. Gunakan formulir ini untuk adaptor yang sudah terdaftar sebagai paket model SageMaker AI, seperti adaptor yang diproduksi oleh alur kerja penyempurnaan SageMaker AI. SageMaker AI membaca lokasi artefak adaptor dari setiap paket model.

Ini AdapterId adalah nama yang Anda tetapkan untuk setiap adaptor. Itu harus memenuhi persyaratan berikut:

  • Harus unik dalam permintaan.

  • Harus tidak lebih dari 63 karakter.

  • Harus cocok dengan pola^[a-zA-Z0-9](-*[a-zA-Z0-9])*$: dimulai dan diakhiri dengan karakter alfanumerik, mengizinkan tanda hubung hanya antara karakter alfanumerik, dan tidak menggunakan garis bawah.

SageMaker AI menggunakan AdapterId sebagai nama komponen inferensi untuk adaptor itu. Nama ini juga merupakan pegangan routing yang Anda gunakan untuk mengirim permintaan ke adaptor saat Anda memanggil titik akhir yang digunakan.

Python (boto3) — adaptor di Amazon S3

try: response = client.create_ai_recommendation_job( AIRecommendationJobName="my-lora-recommendation-job", ModelSource={ "S3": { "S3Uri": "s3://amzn-s3-demo-bucket/models/my-base-model/", } }, OutputConfig={ "S3OutputLocation": "s3://amzn-s3-demo-bucket/recommendations/" }, AdapterSource={ "S3Uris": [ {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"}, {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"}, ] }, PerformanceTarget={ "Constraints": [ {"Metric": "throughput"} ] }, AIWorkloadConfigIdentifier="my-recommendation-workload", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", ) print(response["AIRecommendationJobArn"]) except client.exceptions.ResourceInUse as error: print(f"A job with this name already exists: {error}") except Exception as error: print(f"Error creating recommendation job: {error}") raise

Python (boto3) — adaptor sebagai paket model

try: response = client.create_ai_recommendation_job( AIRecommendationJobName="my-lora-recommendation-job", ModelSource={ "S3": { "S3Uri": "s3://amzn-s3-demo-bucket/models/my-base-model/", } }, OutputConfig={ "S3OutputLocation": "s3://amzn-s3-demo-bucket/recommendations/" }, AdapterSource={ "ModelPackageArns": [ { "AdapterId": "sql", "ModelPackageArn": "arn:aws:sagemaker:us-west-2:111122223333:model-package/my-sql-adapter/1", } ] }, PerformanceTarget={ "Constraints": [ {"Metric": "throughput"} ] }, AIWorkloadConfigIdentifier="my-recommendation-workload", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", ) print(response["AIRecommendationJobArn"]) except client.exceptions.ResourceInUse as error: print(f"A job with this name already exists: {error}") except Exception as error: print(f"Error creating recommendation job: {error}") raise

AWS CLI

aws sagemaker create-ai-recommendation-job \ --ai-recommendation-job-name "my-lora-recommendation-job" \ --model-source '{"S3": {"S3Uri": "s3://amzn-s3-demo-bucket/models/my-base-model/"}}' \ --output-config '{"S3OutputLocation": "s3://amzn-s3-demo-bucket/recommendations/"}' \ --adapter-source '{ "S3Uris": [ {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"}, {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"} ] }' \ --performance-target '{"Constraints": [{"Metric": "throughput"}]}' \ --ai-workload-config-identifier "my-recommendation-workload" \ --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \ --region us-west-2
catatan

Tidak ada peringkat adaptor (rinadapter_config.json) yang dapat melebihi 512, peringkat LoRa terbesar yang didukung vLLM mesin penyaji. SageMaker AI melayani semua adaptor Anda pada satu peringkat, dan membulatkan peringkat tersebut ke peringkat terdekat yang vLLM mendukung: 1, 8, 16, 32, 64, 128, 256, 320, atau 512. Misalnya, SageMaker AI melayani adaptor dengan peringkat 4 dan 12 di peringkat 16. Jika peringkat terbesar di seluruh adaptor Anda melebihi 512, pekerjaan gagal dengan kesalahan validasi. Latih ulang adaptor yang terpengaruh dengan peringkat yang lebih kecil, atau hilangkan dari. AdapterSource

Menafsirkan rekomendasi

Ketika pekerjaan selesai, hubungiDescribeAIRecommendationJob. Selain bidang yang dijelaskan diLangkah 3: Tinjau rekomendasi, respons mencakup informasi khusus adaptor.

AdapterSource

Respons tingkat atas menggemakan AdapterSource yang Anda berikan, dalam bentuk yang sama (S3UrisatauModelPackageArns).

AdapterDetails

Setiap rekomendasi dalam Recommendations array membawa AdapterDetails objek yang mencantumkan setiap adaptor dalam kedua bentuk: S3Uris danModelPackageArns, dikunci olehAdapterId. Jika Anda menyediakan adaptor hanya sebagai URI Amazon S3, SageMaker AI mendaftarkan paket model untuk setiap adaptor atas nama Anda dan mengembalikan ARN-nya di sini. Ini memberi Anda artefak terdaftar dan berversi untuk digunakan.

DeploymentConfigurationDi setiap rekomendasi menjelaskan topologi berbasis komponen inferensi multi-adaptor (model dasar ditambah satu komponen inferensi per adaptor). ExpectedPerformancemelaporkan metrik tolok ukur untuk konfigurasi itu.

Contoh berikut menunjukkan bidang DescribeAIRecommendationJob respons terkait adaptor untuk pekerjaan yang dibuat dengan adaptor Amazon S3.

{ "AIRecommendationJobName": "my-lora-recommendation-job", "AIRecommendationJobStatus": "Completed", "AdapterSource": { "S3Uris": [ {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"}, {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"} ] }, "Recommendations": [ { "AdapterDetails": { "S3Uris": [ {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"}, {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"} ], "ModelPackageArns": [ {"AdapterId": "sql", "ModelPackageArn": "arn:aws:sagemaker:us-west-2:111122223333:model-package/my-lora-recommendation-job-adapters/1"}, {"AdapterId": "chat", "ModelPackageArn": "arn:aws:sagemaker:us-west-2:111122223333:model-package/my-lora-recommendation-job-adapters/2"} ] }, "DeploymentConfiguration": { "InstanceType": "ml.g6e.12xlarge", "InstanceCount": 1, "CopyCountPerInstance": 2, "MinCpuMemoryRequiredInMb": 12288, "EnvironmentVariables": { "SAGEMAKER_SHM_SIZE_MB": "2048" } }, "ExpectedPerformance": [ {"Metric": "throughput", "Stat": "average", "Value": "512.0", "Unit": "tokens/second"} ] } ] }

Untuk membandingkan titik akhir multi-adaptor yang digunakan, atau membandingkan adaptor satu sama lain, targetkan komponen inferensi untuk setiap adaptor dalam pekerjaan benchmark Anda. Lihat informasi yang lebih lengkap di Benchmark titik akhir Multi-lora.