Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Dapatkan rekomendasi penerapan inferensi AI generatif
Pekerjaan rekomendasi AI menganalisis model dan karakteristik beban kerja Anda untuk menghasilkan konfigurasi penerapan yang dioptimalkan untuk biaya, latensi, atau throughput. Layanan mengevaluasi jenis instans, menerapkan pengoptimalan seperti decoding spekulatif, dan benchmark setiap konfigurasi pada infrastruktur GPU nyata.
Prasyarat
Sebelum Anda membuat pekerjaan rekomendasi, Anda memerlukan yang berikut:
-
Artefak model yang disimpan di Amazon S3 HuggingFace dalam format pos pemeriksaan dengan bobot SafeTensor
-
Bucket Amazon S3 untuk keluaran rekomendasi
-
Peran eksekusi AWS Identity and Access Management (IAM) and Access Management (IAM) yang memberikan akses SageMaker AI ke artefak model dan bucket keluaran Anda
Langkah 1: Buat pekerjaan rekomendasi
Pekerjaan rekomendasi menganalisis model Anda dan menghasilkan rekomendasi penerapan. Anda menentukan lokasi model, lokasi keluaran, konfigurasi beban kerja, dan target kinerja.
Python (boto3)
response = client.create_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job", ModelSource={ "S3": { "S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/", } }, OutputConfig={ "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/" }, PerformanceTarget={ "Constraints": [ {"Metric": "ttft-ms"} ] }, AIWorkloadConfigIdentifier="my-recommendation-workload", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", ) print(response["AIRecommendationJobArn"])
AWS CLI
aws sagemaker create-ai-recommendation-job \ --ai-recommendation-job-name "my-recommendation-job" \ --model-source '{"S3": {"S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/"}}' \ --output-config '{"S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/"}' \ --performance-target '{"Constraints": [{"Metric": "ttft-ms"}]}' \ --ai-workload-config-identifier "my-recommendation-workload" \ --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \ --region us-west-2
Anda juga dapat menentukan parameter opsional berikut:
ComputeSpec-
Batasi jenis instance untuk dievaluasi (maksimal tiga). Misalnya:
{"InstanceTypes": ["ml.g5.12xlarge", "ml.p4d.24xlarge"]} OptimizeModel-
Setel
trueuntuk memungkinkan pengoptimalan model seperti decoding spekulatif. InferenceSpecification-
Tentukan kerangka inferensi. Nilai-nilai yang valid:
LMI,VLLM.
Langkah 2: Pantau status pekerjaan
Polling status pekerjaan hingga mencapai status terminal.
Python (boto3)
import time while True: response = client.describe_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) status = response["AIRecommendationJobStatus"] print(f"Status: {status}") if status in ("Completed", "Failed", "Stopped"): break time.sleep(30)
AWS CLI
aws sagemaker describe-ai-recommendation-job \ --ai-recommendation-job-name "my-recommendation-job" \ --region us-west-2
Langkah 3: Tinjau rekomendasi
Ketika pekerjaan selesai, respon describe mencakup Recommendations array. Setiap rekomendasi berisi konfigurasi siap penerapan dengan informasi berikut:
DeploymentConfiguration-
URI gambar kontainer, tipe instance, jumlah instance, dan variabel lingkungan. Anda dapat menggunakan konfigurasi ini untuk menyebarkan langsung ke titik akhir SageMaker AI.
ExpectedPerformance-
Metrik kinerja yang divalidasi termasuk Time to First Token (TTFT), permintaan latensi pada P90 dan P99, throughput dalam token per detik, dan permintaan throughput.
OptimizationDetails-
Teknik optimasi terapan seperti decoding spekulatif atau penyetelan kernel, dengan parameter konfigurasinya.
Teknik optimasi berikut dapat diterapkan:
- Penguraian spekulatif
-
Decoding spekulatif mempercepat pembuatan teks dengan memproses beberapa token secara paralel daripada satu token pada satu waktu. Seorang spekulan ringan mengusulkan beberapa token kandidat dalam satu langkah, dan model utama kemudian memverifikasi mereka bersama-sama dalam satu pass maju, menjaga kandidat yang setuju dengan distribusinya sendiri dan membuang sisanya. Spekulan dilatih untuk menyelaraskan dengan distribusi data model primer sehingga lebih banyak proposal diterima, yang secara langsung diterjemahkan menjadi token yang lebih berguna yang dihasilkan per pass forward. Distribusi keluaran model primer dipertahankan, sehingga kualitas respons tidak berubah. Hasilnya adalah token keluaran per detik yang lebih tinggi dan latensi antar-token (ITL) yang lebih rendah, sehingga meningkatkan metrik throughput Anda.
- Penyetelan kernel
-
Penyetelan kernel dimulai dengan mengurai grafik eksekusi model untuk mengidentifikasi kernel kritis kinerja yang merupakan kandidat yang baik untuk penyetelan, seperti perhatian dan kernel operator yang menyatu. Parameter peluncuran dan ubin mereka kemudian disetel sehingga implementasinya lebih cocok dengan perangkat keras GPU target dan pola lalu lintas yang diharapkan, seperti konkurensi. Parameter ini memengaruhi penggunaan kembali memori, lokalitas cache, dan paralelisme, meningkatkan efisiensi eksekusi. Jumlah tahapan pipeline yang digunakan untuk memuat data dan komputasi juga disetel, membantu tumpang tindih pergerakan memori dengan komputasi. Dengan menyetel parameter ini untuk kombinasi spesifik model, perangkat keras, dan beban kerja penyajian, penyetelan kernel meningkatkan throughput dan latensi dengan memastikan GPU dimanfaatkan sepenuhnya.
Metrik target kinerja berikut tersedia:
ttft-ms-
Saatnya token pertama dalam milidetik.
throughput-
Token per detik.
cost-
Biaya per jam konfigurasi penerapan.
Setiap metrik dalam ExpectedPerformance respons mencakup Stat bidang yang menunjukkan ukuran statistik, aValue, dan opsionalUnit. Statistik umum meliputi:average,p50,p90,p95,p99,max, danmin.
Kelola sumber daya rekomendasi
Gunakan operasi berikut untuk mengelola pekerjaan rekomendasi dan konfigurasi beban kerja Anda.
# List recommendation jobs response = client.list_ai_recommendation_jobs(MaxResults=10) for job in response["AIRecommendationJobs"]: print(f"{job['AIRecommendationJobName']} - {job['AIRecommendationJobStatus']}") # Stop a running job client.stop_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) # Delete a job (must be in a terminal state) client.delete_ai_recommendation_job( AIRecommendationJobName="my-recommendation-job" ) # List workload configurations response = client.list_ai_workload_configs(MaxResults=10) for config in response["AIWorkloadConfigs"]: print(f"{config['AIWorkloadConfigName']} - {config['AIWorkloadConfigArn']}") # Delete a workload configuration client.delete_ai_workload_config( AIWorkloadConfigName="my-recommendation-workload" )