TutorialAI Translated Content

Self-Hosted LLM untuk Enterprise #4

Tim Float16
2 min read
Self-Hosted LLM untuk Enterprise #4

Ini adalah bagian akhir untuk deploy model LLM Anda sendiri. Setelah setup semua service dan alat yang diperlukan di bagian sebelumnya, mari kita lanjutkan dengan mengunduh model dan membuat API Endpoint.

Untuk mereka yang baru membaca ini sebagai bagian pertama, Anda dapat mengikuti bagian sebelumnya di:

Bagian 1

Bagian 2

Bagian 3

Mari kita mulai Bagian 4!!

1. Buat Project dan Unduh Model

# 1. Create folder for project
mkdir -p llm-chat-api
cd llm-chat-api
# 2. Download model (Llama 3.2 1B Q8_0)
huggingface-cli download bartowski/Llama-3.2-1B-Instruct-GGUF \
Llama-3.2-1B-Instruct-Q8_0.gguf --local-dir model

File model akan disimpan di ./model/Llama-3.2-1B-Instruct-Q8_0.gguf

2. Buat File Python untuk Menjalankan Model

Buat file main.py

# main.py
from llama_cpp import Llama
llm = Llama(
    model_path="model/Llama-3.2-1B-Instruct-Q8_0.gguf",
    n_gpu_layers=-1,
    verbose=False,
    chat_format='llama-3'
)
output = llm.create_chat_completion(
    messages=[
        {"role": "system", "content": "You are an best assistant"},
        {"role": "user", "content": "Introduce yourself"}
    ]
)
print(output["choices"][0]["message"]["content"])

Test run dengan:

python3 main.py

3. Buka API dengan FastAPI

Instal FastAPI dan Uvicorn (server)

pip install fastapi uvicorn pydantic

Update main.py menjadi REST API dengan POST

# main.py
from fastapi import FastAPI
from pydantic import BaseModel
from llama_cpp import Llama

app = FastAPI()

llm = Llama(
    model_path="model/Llama-3.2-1B-Instruct-Q8_0.gguf",
    n_gpu_layers=-1,
    verbose=False,
    chat_format='llama-3'
)

class PromptRequest(BaseModel):
    prompt: str

@app.post("/chat")
def chat(req: PromptRequest):
    response = llm.create_chat_completion(
        messages=[
            {"role": "system", "content": "You are an assistant who can help to answer general question"},
            {"role": "user", "content": req.prompt}
        ]
    )
    return {"response": response["choices"][0]["message"]["content"]}

4. Jalankan API Server

uvicorn main:app --host 0.0.0.0 --port 8000

API akan tersedia di http://localhost:8000/chat

Kita dapat mentest via curl:

curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Describe a sunset over the ocean."}'

Ringkasan Keseluruhan

Dari semua bagian, kita dapat membuat endpoint LLM sederhana untuk penggunaan tim, baik untuk testing atau mengembangkan ke berbagai produk. Akhirnya, saya ingin meminta semua orang untuk terus mengikuti artikel lain. Saya jamin akan ada konten menarik untuk diikuti.