Pilihan yang sangat tepat! Menggunakan Amazon SageMaker adalah cara terbaik dan paling profesional untuk menjalankan Whisper jika kamu ingin membuatnya menjadi API (Endpoint) yang siap dipakai oleh aplikasi lain (Web/Mobile).
Cara paling mudah untuk men-deploy Whisper di SageMaker adalah dengan menggunakan Hugging Face Deep Learning Container (DLC) yang sudah terintegrasi dengan SageMaker.
Berikut adalah panduan step-by-step dari awal sampai API-nya bisa dites.
Langkah 1: Persiapan (Di AWS Console)
- Masuk ke akun AWS kamu.
- Buka layanan Amazon SageMaker.
- Pilih Notebook instances di menu kiri, lalu klik Create notebook instance.
- Beri nama (misal:
whisper-deploy-notebook). - Pada bagian Instance type, kamu bisa pakai yang standar seperti
ml.t3.medium(ini hanya untuk menjalankan script deployment-nya, bukan untuk menjalankan modelnya). - Di bagian IAM Role, pilih Create a new role, pastikan role tersebut punya akses ke Any S3 bucket.
- Klik Create notebook instance. Tunggu beberapa menit sampai statusnya InService, lalu klik Open JupyterLab.
Langkah 2: Menulis Script Deployment
Di dalam JupyterLab, buat sebuah notebook baru (pilih conda_pytorch_p310 atau Python 3 standard).
Masukkan code berikut di dalam sebuah cell untuk menginstal library yang dibutuhkan dan memulai deployment:
!pip install sagemaker boto3 --upgrade
import sagemaker
import boto3
from sagemaker.huggingface import HuggingFaceModel
# Mendapatkan IAM Role dari SageMaker Notebook yang sedang berjalan
try:
role = sagemaker.get_execution_role()
except ValueError:
iam = boto3.client('iam')
role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']
# Konfigurasi Model Whisper dari Hugging Face
# Kamu bisa ganti ke "openai/whisper-large-v3" kalau butuh yang paling akurat
hub = {
'HF_MODEL_ID': 'openai/whisper-base', # Mulai dengan model 'base' agar cepat
'HF_TASK': 'automatic-speech-recognition'
}
# Membuat object Hugging Face Model
huggingface_model = HuggingFaceModel(
transformers_version='4.37.0', # Versi transformers (bisa disesuaikan dengan yang terbaru)
pytorch_version='2.1.0', # Versi PyTorch
py_version='py310',
env=hub,
role=role,
)
# PROSES DEPLOYMENT (Ini memakan waktu sekitar 5-10 menit)
print("Memulai deployment Endpoint...")
predictor = huggingface_model.deploy(
initial_instance_count=1,
instance_type='ml.g4dn.xlarge' # Kita pakai GPU instance (Nvidia T4) agar transkripsi cepat
)
print("Deployment Selesai! Endpoint Name:", predictor.endpoint_name)
Klik Run / Shift+Enter dan tunggu. SageMaker sedang membuat server (EC2) di belakang layar, mengunduh model Whisper, dan menyiapkannya menjadi API Endpoint.
Langkah 3: Mengetes Model (Inference)
Setelah deployment selesai (muncul tulisan "Deployment Selesai!"), kamu bisa langsung mengetesnya dengan file audio.
Siapkan file audio pendek (misalnya test_audio.wav atau test_audio.mp3) dan upload ke dalam JupyterLab. Lalu jalankan script ini:
import base64
import json
file_name = "test_audio.wav" # Ganti dengan nama file audiomu
# Baca file audio dan ubah menjadi base64 (format yang diminta API Hugging Face)
with open(file_name, "rb") as f:
audio_data = f.read()
audio_base64 = base64.b64encode(audio_data).decode('utf-8')
# Format input data
data = {
"inputs": audio_base64
}
# Tembak API / Endpoint-nya
response = predictor.predict(data)
# Print hasilnya
print("Hasil Transkripsi:")
print(response)
Voila! Kamu akan melihat teks hasil transkripsi dari Whisper.
Langkah 4: Memanggil API dari Luar AWS (Aplikasi Kamu)
Jika kamu mau memanggil Endpoint ini dari kodemu sendiri (misal dari backend Node.js atau Python di laptop/server lain), kamu cukup menggunakan AWS SDK (boto3 di Python):
import boto3
import json
# Pastikan AWS CLI di server kamu sudah dikonfigurasi (AWS Access Key & Secret Key)
client = boto3.client('sagemaker-runtime', region_name='us-east-1') # Sesuaikan region
endpoint_name = "NAMA_ENDPOINT_KAMU_DARI_LANGKAH_2" # misal: huggingface-pytorch-inference-2023...
response = client.invoke_endpoint(
EndpointName=endpoint_name,
ContentType='application/json',
Body=json.dumps({"inputs": audio_base64})
)
result = json.loads(response['Body'].read().decode())
print(result)
⚠️ Langkah 5: SANGAT PENTING (Hapus Endpoint!)
Server ml.g4dn.xlarge itu berbayar sekitar $0.73 per jam. Jika kamu sudah selesai mencoba dan tidak ingin ditagih biaya oleh AWS saat kamu sedang tidur, wajib hapus endpoint-nya dengan menjalankan perintah ini di Notebook:
# Menghapus endpoint agar tidak ditagih biaya berkelanjutan
predictor.delete_model()
predictor.delete_endpoint()
print("Endpoint berhasil dihapus!")
Tips Tambahan:
- Jika kamu ingin menggunakan Whisper khusus bahasa Indonesia, kamu bisa memodifikasi variabel
hubdi Langkah 2 dengan menambahkan parameterHF_MODEL_KWARGSagar model di-set ke bahasa Indonesia, atau menggunakan model Whisper finetuned khusus bahasa Indonesia yang ada di Hugging Face (sepertiindonesian-nlp/whisper-base-indonesian).