Menjalankan Whisper di AWS

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…

Menjalankan Whisper di AWS

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)

  1. Masuk ke akun AWS kamu.
  2. Buka layanan Amazon SageMaker.
  3. Pilih Notebook instances di menu kiri, lalu klik Create notebook instance.
  4. Beri nama (misal: whisper-deploy-notebook).
  5. Pada bagian Instance type, kamu bisa pakai yang standar seperti ml.t3.medium (ini hanya untuk menjalankan script deployment-nya, bukan untuk menjalankan modelnya).
  6. Di bagian IAM Role, pilih Create a new role, pastikan role tersebut punya akses ke Any S3 bucket.
  7. 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 hub di Langkah 2 dengan menambahkan parameter HF_MODEL_KWARGS agar model di-set ke bahasa Indonesia, atau menggunakan model Whisper finetuned khusus bahasa Indonesia yang ada di Hugging Face (seperti indonesian-nlp/whisper-base-indonesian).