พื้นฐาน FastAPI สำหรับวิศวกรแมชชีนเลิร์นนิง
แอป FastAPI ปลายทาง GET/POST พารามิเตอร์เส้นทางและคำค้น และความแตกต่างระหว่าง async def กับ def สำหรับการอนุมานแมชชีนเลิร์นนิง
พื้นฐาน FastAPI สำหรับวิศวกรแมชชีนเลิร์นนิง เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงใช้ FastAPI สำหรับการเรียนรู้ของเครื่อง
FastAPI เป็นเฟรมเวิร์กเว็บไพธอนสมัยใหม่ที่เหมาะอย่างยิ่งสำหรับการให้บริการโมเดล เนื่องจากทำงานรวดเร็ว สร้างเอกสารแบบโต้ตอบโดยอัตโนมัติ และตรวจสอบคำขอด้วยคำใบ้ชนิดข้อมูล จึงกลายเป็นวิธีมาตรฐานในการนำโมเดลมาไว้เบื้องหลังเอพีไอผ่าน HTTP
การสร้างแอปพลิเคชัน
สร้างแอปพลิเคชัน FastAPI โดยวัตถุ app นี้จะเก็บจุดเชื่อมต่อทั้งหมดของท่าน
from fastapi import FastAPI
app = FastAPI(title="Model Serving API")จุดเชื่อมต่อ GET /health
การตรวจสอบสถานะ ช่วยให้ตัวกระจายโหลดและระบบจัดการบริการยืนยันได้ว่าบริการยังทำงานอยู่ โดยจะส่งคืนสถานะแบบง่าย ๆ และไม่ทำงานหนัก
@app.get("/health")
def health():
return {"status": "ok"}จุดเชื่อมต่อ POST /predict
การทำนายต้องใช้ข้อมูลนำเข้า จึงใช้ POST พร้อมเนื้อหาคำขอ ฟังก์ชันจะรับข้อมูลที่แยกวิเคราะห์แล้วและส่งคืนผลลัพธ์ของโมเดล
@app.post("/predict")
def predict(features: list[float]):
result = model.predict([features])
return {"prediction": result[0]}GET เทียบกับ POST
- GET: ใช้ดึงข้อมูล ไม่มีเนื้อหาคำขอ และใช้สำหรับการตรวจสอบสถานะหรือการอ่านข้อมูลแบบง่าย
- POST: ใช้ส่งข้อมูลในเนื้อหาคำขอ และใช้สำหรับการทำนายที่มีการส่งคุณลักษณะเข้าไป
การทำงานด้วยยูวิคอร์น
ยูวิคอร์น คือเซิร์ฟเวอร์ ASGI ที่ใช้เรียกใช้ FastAPI โดยสามารถเริ่มทำงานจากโค้ดหรือบรรทัดคำสั่งได้
import uvicorn
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)การเปิดใช้งานผ่านบรรทัดคำสั่ง
โดยทั่วไป ท่านจะเปิดใช้งานผ่าน CLI โดยระบุมอดูลและวัตถุแอปพลิเคชันให้ยูวิคอร์นทราบ --reload จะเริ่มเซิร์ฟเวอร์ใหม่โดยอัตโนมัติเมื่อโค้ดมีการเปลี่ยนแปลงระหว่างการพัฒนา
# terminal
uvicorn main:app --host 0.0.0.0 --port 8000 --reloadเอกสารแบบโต้ตอบที่มีให้โดยอัตโนมัติ
FastAPI สร้างส่วนติดต่อผู้ใช้สแวกเกอร์ที่ /docs และ ReDoc ที่ /redoc โดยอัตโนมัติจากคำใบ้ชนิดข้อมูลของท่าน ทำให้สามารถทดสอบจุดเชื่อมต่อในเบราว์เซอร์ได้โดยไม่ต้องเขียนโค้ดเพิ่มเติม
ฟังก์ชันแบบอะซิงก์สำหรับงานที่ผูกกับ IO
ใช้ ฟังก์ชันแบบอะซิงก์ กับจุดเชื่อมต่อที่ต้องรอ IO เช่น ฐานข้อมูล เอพีไอภายนอก หรือการอ่านไฟล์ การทำงานแบบอะซิงก์ช่วยให้เซิร์ฟเวอร์จัดการคำขออื่นระหว่างรอได้ จึงเพิ่มอัตราการประมวลผล
@app.get("/external")
async def fetch():
data = await call_remote_service()
return dataฟังก์ชันแบบซิงก์สำหรับการอนุมานที่ผูกกับ CPU
โมเดล predict มักเป็นงานที่ผูกกับ CPU ควรกำหนดจุดเชื่อมต่อเหล่านี้ด้วย ฟังก์ชันแบบซิงก์ ตามปกติ โดย FastAPI จะเรียกใช้ผ่านกลุ่มเธรดเพื่อไม่ให้ขัดขวางวงจรเหตุการณ์ หากใช้การทำงานแบบอะซิงก์กับงานที่ใช้ CPU หนัก เซิร์ฟเวอร์อาจหยุดตอบสนองได้จริง
@app.post("/predict")
def predict(features: list[float]):
# CPU-bound inference -> sync def
return {"prediction": model.predict([features])[0]}การเลือกแบบอะซิงก์หรือซิงก์
- ฟังก์ชันแบบอะซิงก์: งานที่ผูกกับ IO ซึ่งรอเครือข่ายหรือดิสก์
- ฟังก์ชันแบบซิงก์: การอนุมานโมเดลที่ผูกกับ CPU ซึ่งทำงานในกลุ่มเธรด
การเลือกให้เหมาะสมช่วยให้เซิร์ฟเวอร์ตอบสนองได้ดีขณะมีภาระงานสูง
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้พื้นฐานเกี่ยวกับ FastAPI ของท่าน
ทบทวน
ท่านสร้างบริการ FastAPI แล้ว: สร้าง app เพิ่ม GET /health และ POST /predict เรียกใช้ด้วย ยูวิคอร์น และเรียนรู้การใช้ ฟังก์ชันแบบอะซิงก์ สำหรับงานที่ผูกกับ IO กับ ฟังก์ชันแบบซิงก์ สำหรับการอนุมานที่ผูกกับ CPU ขั้นถัดไป: สคีมาคำขอและการตอบกลับด้วยไพแดนติก
คำถามที่พบบ่อย
บทเรียน “พื้นฐาน FastAPI สำหรับวิศวกรแมชชีนเลิร์นนิง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐาน FastAPI สำหรับวิศวกรแมชชีนเลิร์นนิง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน FastAPI สำหรับวิศวกรแมชชีนเลิร์นนิง”
แอป FastAPI ปลายทาง GET/POST พารามิเตอร์เส้นทางและคำค้น และความแตกต่างระหว่าง async def กับ def สำหรับการอนุมานแมชชีนเลิร์นนิง คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “พื้นฐาน FastAPI สำหรับวิศวกรแมชชีนเลิร์นนิง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน FastAPI สำหรับวิศวกรแมชชีนเลิร์นนิง
- สคีมา Pydantic สำหรับคำขอและการตอบกลับ
- การโหลดและให้บริการโมเดลแมชชีนเลิร์นนิง
- การจัดแบบจำลอง API ไว้ใน Docker