TutorialAI Translated Content

Self-Hosted LLM untuk Enterprise #4

Pasukan Float16
2 min read
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:

Bahagian 1

Bahagian 2

Bahagian 3

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.