Self-Hosted LLM untuk Enterprise #4
Ini adalah bahagian akhir untuk deploy model LLM anda sendiri. Selepas setup semua service dan alat yang diperlukan di bahagian sebelumnya, mari kita teruskan dengan memuat turun model dan mencipta API Endpoint.
Untuk mereka yang baru membaca ini sebagai bahagian pertama, anda boleh mengikuti bahagian sebelumnya di:
Mari kita mulakan Bahagian 4!!
1. Cipta Project dan Muat Turun 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
Fail model akan disimpan di ./model/Llama-3.2-1B-Instruct-Q8_0.gguf
2. Cipta Fail Python untuk Menjalankan Model
Cipta fail 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
Pasang 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 boleh mentest melalui curl:
curl -X POST http://localhost:8000/chat \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Describe a sunset over the ocean."}'
Ringkasan Keseluruhan
Daripada semua bahagian, kita boleh mencipta endpoint LLM mudah untuk penggunaan pasukan, sama ada untuk testing atau membangunkan ke pelbagai produk. Akhir sekali, saya ingin meminta semua orang untuk terus mengikuti artikel lain. Saya jamin akan ada kandungan menarik untuk diikuti.