FastAPI-г ашиглан өндөр хүчин чадалтай, үйлдвэрлэлд бэлэн LLM API байгуулах нь: Алхам алхмаарх заавар
# FastAPI-г ашиглан өндөр хүчин чадалтай, үйлдвэрлэлд бэлэн LLM API байгуулах нь: Алхам алхмаарх заавар
FastAPI нь орчин үеийн, өндөр хүчин чадалтай Python Web framework бөгөөд хэрэглэхэд хялбар, хурдан бөгөөд автоматаар үүсгэсэн API баримт бичгээрээ алдартай. Ялангуяа LLM (Large Language Model) програмын арын API-г бүтээхэд FastAPI нь хүчтэй давуу талаа харуулдаг. Энэхүү нийтлэл нь FastAPI-г ашиглан үйлдвэрлэлд бэлэн LLM API-г хэрхэн бүтээхийг алхам алхмаар зааж, зарим шилдэг туршлагыг судлах болно.
## Яагаад FastAPI-г сонгох вэ?
LLM програмын API-г бүтээхдээ FastAPI нь дараах гол давуу талуудыг санал болгодог:
* **Өндөр хүчин чадалтай:** ASGI дээр суурилсан FastAPI нь өндөр зэрэгцээ хүсэлтийг зохицуулж чаддаг бөгөөд энэ нь хурдан хариу өгөх шаардлагатай LLM програмуудад чухал юм.
* **Асинхрон дэмжлэг:** FastAPI нь `async` болон `await` түлхүүр үгсийг дэмждэг бөгөөд энэ нь LLM дүгнэлтийг дуудах гэх мэт асинхрон үйлдлүүдийг хялбархан зохицуулж, үндсэн урсгалыг хаахаас зайлсхийх боломжийг олгодог.
* **Автомат API баримт бичиг:** FastAPI нь OpenAPI болон JSON Schema-г ашиглан интерактив API баримт бичгийг (Swagger UI) автоматаар үүсгэдэг бөгөөд энэ нь хөгжүүлэгчдэд таны API-г туршиж, ашиглахад хялбар болгодог.
* **Өгөгдлийн баталгаажуулалт:** FastAPI нь Pydantic-ийг ашиглан өгөгдлийн баталгаажуулалтыг хийж, хүсэлтийн параметрийн зөв эсэхийг баталгаажуулж, алдааг бууруулдаг.
* **Хамаарлын тарилга:** FastAPI-ийн хамаарлын тарилгын систем нь LLM загвар гэх мэт нөөцийг хялбархан удирдаж, хуваалцах боломжийг олгодог.
* **Идэвхтэй нийгэмлэг:** FastAPI нь асар том бөгөөд идэвхтэй нийгэмлэгтэй бөгөөд баялаг нөөц, дэмжлэг авах боломжтой.
## Бэлтгэл ажил
1. **Python суулгах:** Python 3.7 эсвэл түүнээс дээш хувилбарыг суулгасан эсэхээ шалгаарай.
2. **FastAPI болон Uvicorn суулгах:** pip ашиглан FastAPI болон Uvicorn (ASGI сервер)-г суулгана уу:
```bash
pip install fastapi uvicorn
- LLM загвар сонгох: Ашиглахыг хүсч буй LLM загвараа сонгоно уу. Энэ нь OpenAI-ийн загвар эсвэл TinyLlama гэх мэт нээлттэй эхийн загвар байж болно. Хэрэв та OpenAI-г сонговол OpenAI API түлхүүр авах хэрэгтэй. Хэрэв та TinyLlama-г сонговол загвар файлуудыг татаж авах хэрэгтэй.
Алхам 1: FastAPI програм үүсгэх
main.py нэртэй файл үүсгэж, дараах кодыг нэмнэ үү:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI(title="LLM API", description="LLM-тэй харилцах энгийн API.")
class InputText(BaseModel):
text: str
class OutputText(BaseModel):
generated_text: str
Энэ код нь FastAPI програмыг тодорхойлж, хоёр Pydantic загварыг тодорхойлсон: InputText нь оролтын текстийг хүлээн авахад, OutputText нь үүсгэсэн текстийг буцаахад зориулагдсан.
Алхам 2: LLM дүгнэлтийн логик нэмэх
Таны сонгосон LLM загвараас хамааран зохих дүгнэлтийн логикийг нэмнэ үү. Энд OpenAI API-г ашиглах жишээг авч үзье:
import openai
import os
# OpenAI API түлхүүр авах
openai.api_key = os.environ.get("OPENAI_API_KEY") # Байгаль орчны хувьсагчийг ашиглахыг зөвлөж байна
```@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
"""
OpenAI-г ашиглан оруулсан текстийн дагуу текст үүсгэдэг.
"""
try:
response = openai.Completion.create(
engine="text-davinci-003", # Загвар сонгох
prompt=input_text.text,
max_tokens=150,
n=1,
stop=None,
temperature=0.7,
)
generated_text = response.choices[0].text.strip()
return OutputText(generated_text=generated_text)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
Энэ код нь /generate замыг тодорхойлдог бөгөөд энэ нь InputText объектыг оролт болгон авч, OpenAI API-г ашиглан текст үүсгэж, үүсгэсэн текстийг OutputText объект болгон буцаана. text-davinci-003-г өөрийн сонгосон загвараар солих хэрэгтэй.
Хэрэв та TinyLlama гэх мэт локал загварыг ашиглаж байгаа бол transformers гэх мэт холбогдох санг суулгаж, загварыг санах ойд ачаалах хэрэгтэй. Кодын жишээ:
from transformers import pipeline
import torch
generator = pipeline('text-generation', model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", torch_dtype=torch.bfloat16, device_map="auto")
@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
"""
TinyLlama-г ашиглан оруулсан текстийн дагуу текст үүсгэдэг.
"""
try:
generated_text = generator(input_text.text, max_length=50, do_sample=True, temperature=0.7)[0]['generated_text']
return OutputText(generated_text=generated_text)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
3-р алхам: FastAPI програмыг ажиллуулах
Uvicorn-г ашиглан FastAPI програмыг ажиллуулна уу:
uvicorn main:app --reload
```Энэ нь локал сервер эхлүүлнэ. Та браузер дээрээс `http://127.0.0.1:8000/docs` хаягаар орж автоматаар үүсгэгдсэн API-ийн баримт бичгийг үзэх боломжтой. `--reload` параметр нь кодыг өөрчлөхөд автоматаар серверийг дахин эхлүүлж, хөгжүүлэлтийг хялбар болгодог.
## Алхам 4: API-г турших
API-ийн баримт бичиг эсвэл curl зэрэг хэрэгслийг ашиглан API-гаа туршаарай. Жишээлбэл, curl ашиглан POST хүсэлт илгээх:
```bash
curl -X POST -H "Content-Type: application/json" -d '{"text": "Муурны тухай хошин яриа хэлж өгөөч."' http://127.0.0.1:8000/generate
Та үүсгэгдсэн текстийг агуулсан JSON хариу авах ёстой.
Алхам 5: Үйлдвэрлэлд байршуулах
FastAPI програмаа үйлдвэрлэлийн орчинд байршуулах, жишээлбэл:
- Docker: Docker ашиглан програмаа контейнержуулж, байршуулах, удирдах ажлыг хялбар болгоно.
- Үүлэн платформ: AWS, Google Cloud Platform эсвэл Azure зэрэг үүлэн платформд байршуулах. Энд дурдсан Azure Cosmos DB болон Azure Functions нь сервергүй API үүсгэхэд ашиглагдаж болно. Modal нь мөн автоматаар өргөжих FastAPI програмыг байршуулахад ашиглагдаж болно.
- Сервер: Өөрийн сервер дээр байршуулах.
Шилдэг туршлагууд
- Мэдрэмтгий мэдээллийг хадгалахын тулд орчны хувьсагчийг ашиглах: API түлхүүр гэх мэт мэдрэмтгий мэдээллийг кодонд хатуу кодлохгүйгээр орчны хувьсагчийг ашиглаарай.
- Лог бичлэгийг нэмэх: API-ийн ажиллах төлөвийг бүртгэхийн тулд лог бичлэгийн модулийг ашиглаж, алдааг олж засварлах, хянах ажлыг хялбар болгоно.
- Алдаа боловсруулалтыг нэмэх:
try...exceptблокыг ашиглан гарч болзошгүй алдааг боловсруулж, тохирох алдааны мэдээллийг буцаана уу. - Хурдны хязгаарлалт: API-г буруугаар ашиглахаас сэргийлэхийн тулд хурдны хязгаарлагчийг ашиглана уу. FastAPI-д ашиглах боломжтой хурдны хязгаарлалтын хэд хэдэн сан байдаг.
- Кэш: Давтагдсан хүсэлтийн хувьд гүйцэтгэлийг сайжруулахын тулд кэш ашиглаж болно.
- Хяналт: API-ийн гүйцэтгэл, хүртээмжийг хянахын тулд хяналтын хэрэгслийг ашиглана уу.
Дэвшилтэт зөвлөмжүүд
- Асинхрон боловсруулалт: Цаг хугацаа их шаардсан LLM дүгнэлтийн хувьд үндсэн урсгалыг хаахаас зайлсхийхийн тулд
asyncболонawaitтүлхүүр үгсийг ашиглан асинхрон боловсруулалт хийнэ үү. - Урсгал хариу: Урсгал хариу (StreamingResponse) ашиглан үүсгэгдсэн текстийг бодит цаг хугацаанд буцааж, хэрэглэгчийн туршлагыг сайжруулна уу.
- Олон урсгал/олон процесс: CPU-д ачаалалтай LLM дүгнэлтийн хувьд гүйцэтгэлийг сайжруулахын тулд олон урсгал эсвэл олон процессыг ашиглаж болно.
- GPU хурдатгал: Хэрэв таны LLM загвар GPU хурдатгалыг дэмждэг бол CUDA эсвэл бусад GPU хурдатгалын санг ашиглан дүгнэлтийн хурдыг нэмэгдүүлж болно.





