View a markdown version of this page

Benchmark titik akhir 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.

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 InService status 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" )