AWS: IAM

From OnnoWiki
Revision as of 08:11, 16 December 2024 by Onnowpurbo (talk | contribs) (Created page with "Berikut adalah panduan umum untuk meng-setup infrastruktur di AWS agar dapat membangun pipeline yang melibatkan model Hugging Face, RAG (Retrieval-Augmented Generation), dan A...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Berikut adalah panduan umum untuk meng-setup infrastruktur di AWS agar dapat membangun pipeline yang melibatkan model Hugging Face, RAG (Retrieval-Augmented Generation), dan Amazon SageMaker. Asumsi dasarnya adalah Anda ingin membangun suatu environment yang memungkinkan Anda melakukan eksperimen, pelatihan, dan deployment model LLM (Large Language Model) dengan integrasi bersama Hugging Face dan teknik RAG.

Langkah-langkah Utama:

Membuat AWS Account dan Konfigurasi IAM

  • Buat akun AWS: Jika Anda belum memilikinya, buat akun AWS di [aws.amazon.com](https://aws.amazon.com/).
  • Konfigurasi IAM (Identity and Access Management):
    • Buat user IAM khusus untuk project ML Anda dengan kebijakan yang sesuai.
    • Pastikan user tersebut memiliki hak akses ke layanan-layanan yang diperlukan seperti Amazon S3, SageMaker, dan CloudWatch.
    • Terapkan prinsip *least privilege*: hanya beri izin yang diperlukan, misalnya `AmazonSageMakerFullAccess`, `AmazonS3FullAccess` (atau versi yang lebih terbatas sesuai kebutuhan), dan `AWSCloudFormationFullAccess` jika menggunakan template.
    • Buat *Access Key ID* dan *Secret Access Key* untuk CLI atau SDK jika diperlukan.

Membuat Amazon S3 Bucket untuk Data

  • Buat S3 bucket untuk menyimpan data pelatihan, model checkpoint, dan artefak lainnya.
    • Contohnya: `my-ml-project-bucket`.
    • Pastikan permission di bucket tersebut mengizinkan SageMaker dan IAM role untuk mengakses.

Setup Amazon SageMaker Environment

  • Buka Amazon SageMaker Studio (atau jika belum di-setup, lakukan *onboarding* melalui AWS Console > Amazon SageMaker > Get Started).
  • Pilih *execution role* yang memiliki izin ke S3 dan layanan relevan.
  • Gunakan *SageMaker Studio domain* dan *user profile* yang telah disediakan untuk memulai Notebook.

Integrasi dengan Hugging Face di SageMaker

Amazon SageMaker telah memiliki integrasi resmi dengan Hugging Face. Anda bisa:

  • Menggunakan *pre-built Docker containers* dari Hugging Face yang disediakan oleh SageMaker.
  • Dari SageMaker Notebook, Anda bisa menginstal `transformers`, `datasets`, dan `huggingface_hub` langsung ke dalam environment.

Contoh menginstal di SageMaker Studio Notebook:

!pip install transformers datasets huggingface_hub

Membangun Pipeline RAG (Retrieval-Augmented Generation)=

  • Persiapan Data dan Index: Untuk RAG, Anda perlu menyediakan knowledge base atau corpus yang akan digunakan untuk retrieval. Data ini bisa diupload ke S3 dan diindeks menggunakan solusi retrieval seperti:
    • OpenSearch (AWS-managed Elasticsearch)
    • Faiss (vector store) yang bisa Anda jalankan di dalam Notebook atau endpoint khusus
    • Atau integrasi dengan layanan pihak ketiga untuk vector database.
  • Mempersiapkan Vector Indexing Service: Jika Anda menggunakan Faiss secara manual, Anda bisa membangunnya di dalam Notebook atau menggunakan cluster EC2. Untuk scale yang lebih besar, pertimbangkan Amazon OpenSearch Service jika data dalam bentuk teks yang dapat dicari secara semantik. Ada pula vector search capabilities yang sedang berkembang di OpenSearch.
  • Integrasi Model Hugging Face dengan RAG Pipeline: Misal, Anda memiliki sebuah model generatif (misalnya `facebook/bart-large` atau `bigscience/bloomz`), maka langkahnya:
    • Load model Hugging Face di SageMaker Notebook.
    • Kembangkan script Python untuk melakukan retrieval (query ke index/vector database) dan kemudian gabungkan hasil retrieval dengan prompt untuk model generatif.

Contoh alur pseudo-code RAG:

from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

model_name = "facebook/bart-large"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)

# Fungsi retrieval
def retrieve_documents(query, top_k=5):
    # Kode untuk query ke vector store / OpenSearch
    return retrieved_passages
 # Prompt RAG
def rag_inference(query):
    docs = retrieve_documents(query)
    context = " ".join(docs)
    input_text = f"Context: {context}\nQuestion: {query}\nAnswer:"
    inputs = tokenizer(input_text, return_tensors="pt")
    outputs = model.generate(inputs, max_length=200)
    return tokenizer.decode(outputs[0], skip_special_tokens=True)
# Tes:
answer = rag_inference("Apa itu AWS SageMaker?")
print(answer)

Training Model Hugging Face di SageMaker

Jika Anda ingin melatih model Hugging Face di AWS, gunakan *Hugging Face Estimator* yang disediakan oleh SageMaker:

from sagemaker.huggingface import HuggingFace

# Tentukan environment dan hyperparameter
hyperparameters = {
    'epochs': 3,
    'train_batch_size': 32,
    ...
}

huggingface_estimator = HuggingFace(
    entry_point='train.py',             # script anda
    source_dir='./src',                  # direktori code
    instance_type='ml.p3.2xlarge',      # instance untuk training
    instance_count=1,
    role=<your_sagemaker_execution_role>,
    transformers_version='4.6',
    pytorch_version='1.7',
    py_version='py36',
    hyperparameters=hyperparameters
)
huggingface_estimator.fit(
    {'train': 's3://my-ml-project-bucket/train', 
     'test': 's3://my-ml-project-bucket/test'}
)
  • Deploy Model ke SageMaker Endpoint Setelah pelatihan selesai, Anda dapat mendeloy model ke endpoint SageMaker untuk inference:
predictor = huggingface_estimator.deploy(
    initial_instance_count=1,
    instance_type='ml.m5.xlarge'
)

# Lakukan inference
result = predictor.predict({"inputs": "Hello world"})
print(result)

  • Menghubungkan Endpoint dengan RAG Workflow Setelah model di-deploy, Anda dapat menggabungkan logika retrieval (dari vector store/OpenSearch) di backend (misalnya menggunakan Lambda function atau SageMaker Inference Pipeline) untuk menghasilkan pipeline end-to-end:
    • Request masuk ke API Gateway atau Lambda.
    • Lambda memanggil retrieval layer untuk mendapatkan dokumen terkait.
    • Lambda kemudian memanggil SageMaker endpoint dengan prompt yang sudah dilengkapi context.
    • Hasil akhirnya adalah jawaban model yang sudah diperkaya dengan context hasil retrieval.

Monitoring dan Logging

  • Gunakan CloudWatch untuk memonitor log, metrik, dan performa endpoint.
  • Untuk experiment tracking, Anda dapat menggunakan SageMaker Experiments atau Amazon Athena + QuickSight untuk analitik hasil inference.

Rangkuman

  1. Buat akun dan konfigurasi IAM yang sesuai.
  2. Siapkan S3 bucket untuk data dan artefak.
  3. Gunakan SageMaker Studio untuk notebook environment.
  4. Integrasikan Hugging Face model dengan SageMaker (training & deployment).
  5. Bangun pipeline RAG dengan retrieval system (OpenSearch atau vector store) dan gabungkan output-nya dengan model generatif Hugging Face.
  6. Deploy pipeline sebagai endpoint (SageMaker Endpoint) dan atur integrasi ke sistem hulu-hilir (API Gateway, Lambda, dll).
  7. Monitor dan maintenance menggunakan tool AWS seperti CloudWatch, SageMaker Experiments.

Dengan langkah-langkah di atas, Anda dapat membangun lingkungan AI/ML di AWS yang dapat digunakan untuk Hugging Face models, RAG pipelines, dan deployment melalui SageMaker.

Pranala Menarik