View a markdown version of this page

Dapatkan rekomendasi penerapan inferensi AI generatif - 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 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 true untuk 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" )