Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Benchmark titik akhir inferensi AI generatif
Layanan benchmarking SageMaker AI mengukur kinerja model bahasa besar (LLM) yang dihosting di titik akhir SageMaker AI. Ini menjalankan tolok ukur menggunakan NVIDIA AiPerf, menghasilkan metrik seperti latensi permintaan, throughput, token waktu ke pertama, dan latensi antar-token.
Prasyarat
Sebelum Anda membuat pekerjaan benchmark, Anda memerlukan yang berikut:
-
Titik akhir SageMaker AI dalam
InServicestatus hosting LLM yang mendukung API penyelesaian OpenAI-compatible obrolan -
Bucket Amazon S3 untuk output benchmark
-
Peran eksekusi IAM yang memberikan akses SageMaker AI ke endpoint dan bucket keluaran Anda
Langkah 1: Buat pekerjaan benchmark
Pekerjaan benchmark menargetkan titik akhir SageMaker AI tertentu dan mereferensikan konfigurasi beban kerja.
Python (boto3)
response = client.create_ai_benchmark_job( AIBenchmarkJobName="my-benchmark-job", BenchmarkTarget={ "Endpoint": { "Identifier": "my-sagemaker-endpoint" } }, OutputConfig={ "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/benchmark-results/" }, AIWorkloadConfigIdentifier="my-benchmark-config", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", ) print(response["AIBenchmarkJobArn"])
AWS CLI
aws sagemaker create-ai-benchmark-job \ --ai-benchmark-job-name "my-benchmark-job" \ --benchmark-target '{"Endpoint": {"Identifier": "my-sagemaker-endpoint"}}' \ --output-config '{"S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/benchmark-results/"}' \ --ai-workload-config-identifier "my-benchmark-config" \ --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \ --region us-west-2
Jika titik akhir Anda meng-host beberapa model melalui komponen inferensi, Anda dapat menentukannya dalam InferenceComponents parameter. BenchmarkTarget
Jika titik akhir Anda ada di VPC, teruskan NetworkConfig parameter dengan pengaturan VpcConfig Anda, termasuk ID grup keamanan dan subnet.
Komponen inferensi benchmark
Jika titik akhir Anda menggunakan komponen inferensi alih-alih menerapkan model secara langsung, Anda harus menentukan komponen inferensi yang akan menjadi benchmark di. BenchmarkTarget Ketika komponen inferensi ditentukan, layanan benchmarking merutekan permintaan ke komponen spesifik tersebut daripada model default titik akhir.
Lulus satu atau lebih nama komponen inferensi atau ARN dalam daftar: InferenceComponents
Python (boto3)
response = client.create_ai_benchmark_job( AIBenchmarkJobName="my-ic-benchmark", BenchmarkTarget={ "Endpoint": { "Identifier": "my-multi-model-endpoint", "InferenceComponents": [ {"Identifier": "my-inference-component-llama"} ] } }, OutputConfig={ "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/benchmark-results/" }, AIWorkloadConfigIdentifier="my-benchmark-config", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", )
AWS CLI
aws sagemaker create-ai-benchmark-job \ --ai-benchmark-job-name "my-ic-benchmark" \ --benchmark-target '{ "Endpoint": { "Identifier": "my-multi-model-endpoint", "InferenceComponents": [ {"Identifier": "my-inference-component-llama"} ] } }' \ --output-config '{"S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/benchmark-results/"}' \ --ai-workload-config-identifier "my-benchmark-config" \ --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \ --region us-west-2
catatan
Jika titik akhir Anda dikonfigurasi untuk komponen inferensi tetapi Anda tidak menentukan InferenceComponents dalam target benchmark, pekerjaan gagal dengan kesalahan yang menunjukkan bahwa tidak ada model yang diterapkan langsung di titik akhir. Selalu sertakan InferenceComponents parameter saat membandingkan titik akhir berbasis komponen inferensi.
Benchmark titik akhir Multi-lora
Untuk membandingkan titik akhir yang melayani beberapa adaptor LoRa, tentukan setiap adaptor sebagai komponen inferensi di. BenchmarkTarget Anda dapat menggunakan parameter model_selection_strategy beban kerja secara opsional untuk mengontrol bagaimana benchmark mendistribusikan permintaan di seluruh adaptor. Jika Anda tidak menentukan strategi, defaultnya adalahround_robin.
Pertama, buat konfigurasi beban kerja. Contoh berikut mencakup model_selection_strategy parameter opsional:
# Create a workload config for multi-LoRA benchmarking workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "prompt_input_tokens_mean": 550, "output_tokens_mean": 150, "concurrency": 10, "streaming": True, "tokenizer": "meta-llama/Llama-3.2-1B", "model_selection_strategy": "round_robin" }, "secrets": { "hf_token": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-hf-token-AbCdEf" }, "tooling": {"api_standard": "openai"} } import json client.create_ai_workload_config( AIWorkloadConfigName="multi-lora-config", WorkloadSpec={"Inline": json.dumps(workload_spec)} )
Kemudian, buat pekerjaan benchmark yang menargetkan semua komponen inferensi adaptor LoRa:
response = client.create_ai_benchmark_job( AIBenchmarkJobName="multi-lora-benchmark", BenchmarkTarget={ "Endpoint": { "Identifier": "my-lora-endpoint", "InferenceComponents": [ {"Identifier": "lora-adapter-customer-support"}, {"Identifier": "lora-adapter-code-generation"}, {"Identifier": "lora-adapter-summarization"} ] } }, OutputConfig={ "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/multi-lora-results/" }, AIWorkloadConfigIdentifier="multi-lora-config", RoleArn="arn:aws:iam::111122223333:role/ExampleRole", )
model_selection_strategyParameternya opsional dan menentukan bagaimana alat benchmark mendistribusikan permintaan di seluruh komponen inferensi yang ditentukan. Nilai yang valid adalah:
-
round_robin(default) - setiap adaptor menerima permintaan secara berurutan. Permintaan ke-n dikirim ke adaptor (n mod nomber-of-models). -
random— setiap permintaan ditugaskan ke adaptor secara seragam secara acak.
Jika Anda tidak menentukanmodel_selection_strategy, benchmark menggunakan secara round_robin default.
Benchmark titik akhir multimodal dengan gambar sintetis
Anda dapat membandingkan model bahasa penglihatan dengan menghasilkan gambar sintetis sebagai bagian dari konfigurasi beban kerja. Layanan benchmarking menggunakan AiPerf untuk membuat gambar dengan dimensi dan format yang dapat dikonfigurasi, lalu mengirimkannya sebagai muatan yang dikodekan base64 ke titik akhir Anda.
Contoh berikut membuat konfigurasi beban kerja untuk membandingkan model bahasa visi dengan gambar sintetis:
import json workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "image_width_mean": 640, "image_height_mean": 480, "prompt_input_tokens_mean": 100, "output_tokens_mean": 150, "concurrency": 8, "request_count": 100, "streaming": True, "tokenizer": "meta-llama/Llama-3.2-1B" }, "secrets": { "hf_token": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-hf-token-AbCdEf" } } client.create_ai_workload_config( AIWorkloadConfigName="image-benchmark-config", WorkloadSpec={"Inline": json.dumps(workload_spec)} )
Parameter berikut mengontrol pembuatan gambar sintetis:
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
image_width_mean |
float | Tidak ada | Lebar gambar rata-rata dalam piksel. |
image_width_stddev |
float | Tidak ada | Standar deviasi lebar gambar. Setel untuk memvariasikan dimensi gambar di seluruh permintaan. |
image_height_mean |
float | Tidak ada | Rata-rata tinggi gambar dalam piksel. |
image_height_stddev |
float | Tidak ada | Standar deviasi tinggi gambar. |
image_batch_size |
int | 1 | Jumlah gambar per permintaan. |
image_format |
string | png | Format gambar. Nilai yang valid: png (lossless), jpeg (lossy, file yang lebih kecil), random (secara acak memilih PNG atau JPEG per gambar). |
Variable-size gambar
Gunakan parameter standar deviasi untuk menghasilkan gambar dengan dimensi yang bervariasi, mensimulasikan beban kerja dunia nyata di mana ukuran gambar berbeda:
workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "image_width_mean": 800, "image_width_stddev": 200, "image_height_mean": 600, "image_height_stddev": 150, "image_batch_size": 2, "concurrency": 4, "request_count": 50, "streaming": True, "tokenizer": "meta-llama/Llama-3.2-1B" } }
Benchmark titik akhir multimodal dengan video sintetis
Anda dapat membandingkan model multimodal yang memproses input video dengan menghasilkan video sintetis sebagai bagian dari konfigurasi beban kerja. Layanan benchmarking menggunakan pembuatan video sintetis AiPerf untuk membuat video dengan resolusi, kecepatan bingkai, durasi, dan pengkodean yang dapat dikonfigurasi, lalu mengirimkannya sebagai muatan berenkode base64 ke titik akhir Anda.
catatan
Pembuatan video dinonaktifkan secara default. Anda harus menentukan keduanya video_width dan video_height dalam konfigurasi beban kerja Anda untuk mengaktifkannya.
Contoh berikut membuat konfigurasi beban kerja untuk benchmarking model multimodal dengan video sintetis pada resolusi 640 × 480:
import json workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "video_width": 640, "video_height": 480, "video_fps": 4, "video_duration": 5.0, "output_tokens_mean": 150, "concurrency": 4, "request_count": 50, "streaming": True, "tokenizer": "meta-llama/Llama-3.2-1B" }, "secrets": { "hf_token": "arn:aws:secretsmanager:us-west-2:111122223333:secret:my-hf-token-AbCdEf" } } client.create_ai_workload_config( AIWorkloadConfigName="video-benchmark-config", WorkloadSpec={"Inline": json.dumps(workload_spec)} )
Parameter video
Parameter berikut mengontrol pembuatan video sintetis:
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
video_width |
int | Tidak ada | Lebar bingkai dalam piksel. Harus disetel dengan video_height untuk mengaktifkan pembuatan video. |
video_height |
int | Tidak ada | Tinggi bingkai dalam piksel. Harus disetel dengan video_width untuk mengaktifkan pembuatan video. |
video_fps |
int | 4 | Bingkai per detik. |
video_duration |
float | 5.0 | Durasi klip dalam hitungan detik. |
video_batch_size |
int | 1 | Jumlah video per permintaan. |
video_synth_type |
string | bergerak_shapes | Pola sintesis. Nilai yang valid: moving_shapes (bentuk geometris animasi), grid_clock (kisi dengan animasi jam), noise (noise piksel acak). |
video_format |
string | webm | Format wadah. Nilai valid: webm. |
video_codec |
string | libvpx-vp9 | Codec video. Nilai yang didukung: libvpx-vp9 (VP9, WebM). |
catatan
Layanan benchmarking mendukung pengkodean VP9 dengan format WebM saja.
Trek audio tertanam
Untuk model yang memproses video dan audio bersama-sama, Anda dapat menyematkan trek audio sintetis dalam video yang dihasilkan. Audio dinonaktifkan secara default. Setel video_audio_num_channels ke 1 (mono) atau 2 (stereo) untuk mengaktifkannya.
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
video_audio_num_channels |
int | 0 | 0 = dinonaktifkan, 1 = mono, 2 = stereo. |
video_audio_sample_rate |
int | 44100 | Tingkat sampel dalam Hz (8000—96000). |
video_audio_codec |
string | auto | Codec audio. Auto-selects libvorbisuntuk WebM dan aac untuk MP4. Anda dapat mengganti denganaac,libvorbis, ataulibopus. |
video_audio_depth |
int | 16 | Kedalaman bit per sampel (8, 16, 24, atau 32). |
Contoh pembandingan video
Low-resolution pemahaman video
workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "video_width": 320, "video_height": 240, "video_fps": 2, "video_duration": 3.0, "video_synth_type": "moving_shapes", "concurrency": 4, "request_count": 50, "streaming": True, "tokenizer": "meta-llama/Llama-3.2-1B" } }
Pembandingan video HD
workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "video_width": 1920, "video_height": 1080, "video_fps": 8, "video_duration": 10.0, "concurrency": 2, "request_count": 20, "streaming": True, "tokenizer": "meta-llama/Llama-3.2-1B" } }
Video dengan audio untuk model multimodal
workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "video_width": 640, "video_height": 480, "video_fps": 4, "video_duration": 5.0, "video_audio_num_channels": 1, "video_audio_sample_rate": 16000, "concurrency": 4, "request_count": 50, "streaming": True, "tokenizer": "meta-llama/Llama-3.2-1B" } }
Teks dan video campuran
Gabungkan video dengan petunjuk teks untuk menjawab pertanyaan video atau beban kerja teks:
workload_spec = { "benchmark": {"type": "aiperf"}, "parameters": { "video_width": 640, "video_height": 480, "video_fps": 4, "video_duration": 5.0, "prompt_input_tokens_mean": 100, "output_tokens_mean": 50, "concurrency": 8, "request_count": 100, "streaming": True, "tokenizer": "meta-llama/Llama-3.2-1B" } }
Pertimbangan performa
-
Resolusi dan frame rate yang lebih tinggi meningkatkan waktu pengkodean video dan ukuran muatan. Untuk pengujian throughput tinggi, gunakan resolusi yang lebih rendah (320 × 240 atau 640 × 480).
-
VP9 (
libvpx-vp9) dengan format WebM adalah satu-satunya codec yang didukung dan memberikan kompresi yang baik untuk benchmarking payload. -
Audio menambahkan overhead minimal dibandingkan dengan streaming video. Gunakan mono (
1) pada 16 kHz untuk beban kerja yang berfokus pada ucapan.
Langkah 2: Pantau status pekerjaan
Polling status pekerjaan hingga mencapai status terminal.
Python (boto3)
import time while True: response = client.describe_ai_benchmark_job( AIBenchmarkJobName="my-benchmark-job" ) status = response["AIBenchmarkJobStatus"] print(f"Status: {status}") if status in ("Completed", "Failed", "Stopped"): break time.sleep(30) if status == "Completed": print(f"Results at: {response['OutputConfig']['S3OutputLocation']}") elif status == "Failed": print(f"Job failed: {response.get('FailureReason', 'unknown')}")
AWS CLI
aws sagemaker describe-ai-benchmark-job \ --ai-benchmark-job-name "my-benchmark-job" \ --region us-west-2
Langkah 3: Tinjau hasil benchmark
Hasil benchmark ditulis ke lokasi keluaran Amazon S3 yang Anda tentukan. Hasilnya meliputi metrik utama berikut:
request_throughput-
Permintaan per detik.
request_latency-
End-to-end minta latensi dengan kerusakan persentil (P50, P90, P99).
time_to_first_token-
Waktu dari pengiriman permintaan ke token pertama yang diterima.
inter_token_latency-
Waktu antara token keluaran berturut-turut.
output_token_throughput-
Token keluaran yang dihasilkan per detik.
Setiap metrik mencakup ringkasan statistik: rata-rata, minimum, maksimum, P50, P90, P99, dan standar deviasi.
Kelola sumber daya tolok ukur
Gunakan operasi berikut untuk mengelola pekerjaan benchmark dan konfigurasi beban kerja Anda.
# List benchmark jobs response = client.list_ai_benchmark_jobs(MaxResults=10) for job in response["AIBenchmarkJobs"]: print(f"{job['AIBenchmarkJobName']} - {job['AIBenchmarkJobStatus']}") # Stop a running job client.stop_ai_benchmark_job( AIBenchmarkJobName="my-benchmark-job" ) # Delete a job (must be in a terminal state) client.delete_ai_benchmark_job( AIBenchmarkJobName="my-benchmark-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-benchmark-config" )