Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

ການນຳໃຊ້ Docker ເພື່ອສ້າງ Container ສຳລັບແອັບພລິເຄຊັນ AI ຂອງທ່ານ

ໂພສເມື່ອ # Docker # Machine Learning # AWS Deployment

ການນຳໃຊ້ Docker ເພື່ອສ້າງ Container ສຳລັບແອັບພລິເຄຊັນ AI ຂອງທ່ານ

ລອງນຶກພາບເບິ່ງວ່າ: ທ່ານໄດ້ພັດທະນາໂມເດລ Machine Learning (ML) ເທິງຄອມພິວເຕີຂອງທ່ານຢູ່ທີ່ນະຄອນຫຼວງວຽງຈັນ, ເຊິ່ງສາມາດທຳນາຍຜົນຜະລິດ ແລະ ຄຸນນະພາບຂອງເມັດກາເຟຢູ່ເມືອງປາກຊ່ອງໄດ້ຢ່າງຊັດເຈນ. ໂຄດຂອງທ່ານແລ່ນໄດ້ຢ່າງສົມບູນແບບ! ແຕ່ເມື່ອເຖິງເວລາທີ່ທ່ານເອົາໂປຣເຈັກດັ່ງກ່າວໄປຂຶ້ນລະບົບຄລາວ (Cloud) ເຊັ່ນ AWS ເພື່ອໃຫ້ລູກຄ້າໃຊ້ງານ, ລະບົບພັດຂັດຂ້ອງ (Crash) ແລະ ແລ່ນບໍ່ໄດ້.

ບັນຫາສ່ວນໃຫຍ່ທີ່ນັກພັດທະນາ AI ພົບເຈິຄື “ມັນແລ່ນໄດ້ຢູ່ເຄື່ອງຂ້ອຍ ແຕ່ແລ່ນຢູ່ເຄື່ອງອື່ນບໍ່ໄດ້” (It works on my machine). ເຊິ່ງມັກຈະເກີດຈາກເວີຊັນຂອງ Libraries (ເຊັ່ນ: TensorFlow, PyTorch ຫຼື Scikit-Learn) ບໍ່ກົງກັນ. ວິທີແກ້ໄຂບັນຫານີ້ທີ່ດີທີ່ສຸດໃນປັດຈຸບັນຄື ການນຳໃຊ້ Docker.

ບົດຄວາມນີ້, ເຮົາຈະມາຮຽນຮູ້ວິທີການຫຸ້ມຫໍ່ (Containerize) ໂປຣເຈັກ Python ML ຂອງທ່ານ ແລະ ການກຽມພ້ອມສຳລັບການນຳໄປໃຊ້ງານ (Deploy) ເທິງ AWS.

Docker ແມ່ນຫຍັງ?

Docker ແມ່ນເຄື່ອງມືທີ່ຊ່ວຍໃຫ້ທ່ານສາມາດຫຸ້ມຫໍ່ແອັບພລິເຄຊັນ ແລະ ອົງປະກອບຕ່າງໆທີ່ມັນຕ້ອງການ (ເຊັ່ນ: Libraries, System Tools, Python Version) ເຂົ້າໄວ້ໃນກ່ອງດຽວກັນທີ່ເອີ້ນວ່າ Container.

Container ຈະຮັບປະກັນໄດ້ວ່າ ແອັບພລິເຄຊັນ AI ຂອງທ່ານຈະເຮັດວຽກໄດ້ແນວເກົ່າສະເໝີ ບໍ່ວ່າມັນຈະຖືກນຳໄປລັນຢູ່ເຄື່ອງ Laptop ໝູ່ຂອງທ່ານ, ເຊີບເວີຂອງບໍລິສັດ ຫຼື ເທິງ AWS Cloud.

ກຽມພ້ອມໂປຣເຈັກ Machine Learning

ເພື່ອໃຫ້ເຫັນພາບ, ເຮົາລອງມາສ້າງ Web API ງ່າຍໆດ້ວຍ FastAPI ເພື່ອໃຫ້ບໍລິການໂມເດລທຳນາຍກາເຟປາກຊ່ອງ. ໂຄງສ້າງ Folder ຂອງໂປຣເຈັກຈະເປັນແບບນີ້:

paksong_coffee_ai/
├── app.py              # ໂຄດ API ຂອງພວກເຮົາ
├── model.pkl           # ໂມເດລ ML ທີ່ເທຣນມາແລ້ວ
├── requirements.txt    # ລາຍຊື່ Libraries ທີ່ໃຊ້
└── Dockerfile          # ໄຟລ໌ຄຳສັ່ງສຳລັບສ້າງ Docker Image

ຕົວຢ່າງໂຄດໃນໄຟລ໌ app.py:

from fastapi import FastAPI
import pickle

app = FastAPI()

# ໂຫຼດໂມເດລທຳນາຍຄຸນນະພາບກາເຟ (ຕົວຢ່າງ)
with open("model.pkl", "rb") as f:
    model = pickle.load(f)

@app.get("/")
def read_root():
    return {"message": "ຍິນດີຕ້ອນຮັບສູ່ Paksong Coffee AI API"}

@app.post("/predict")
def predict(data: dict):
    # ການປະມວນຜົນທຳນາຍຜົນ
    prediction = model.predict([data['features']])
    return {"quality_score": int(prediction[0])}

ໃນໄຟລ໌ requirements.txt ກໍຈະມີລາຍຊື່ Library ທີ່ສຳຄັນ:

fastapi==0.95.1
uvicorn==0.21.1
scikit-learn==1.2.2

ມາຂຽນ Dockerfile ກັນເລີຍ

Dockerfile ແມ່ນຄືກັບສູດອາຫານ ທີ່ບອກໃຫ້ Docker ຮູ້ວ່າຈະຕ້ອງສ້າງສະພາບແວດລ້ອມ (Environment) ແນວໃດໃຫ້ກັບແອັບຂອງເຮົາ. ໃຫ້ສ້າງໄຟລ໌ຊື່ Dockerfile (ບໍ່ມີນາມສະກຸນ) ແລ້ວຂຽນລະຫັດລຸ່ມນີ້ໃສ່:

# 1. ເລືອກ Base Image ຂອງ Python (ໃຊ້ເວີຊັນ slim ເພື່ອໃຫ້ຂະໜາດນ້ອຍລົງ)
FROM python:3.9-slim

# 2. ກຳນົດ Directory ຫຼັກພາຍໃນ Container
WORKDIR /app

# 3. ກ໊ອບປີ້ requirements.txt ເຂົ້າໄປກ່ອນ ເພື່ອລົງ Libraries
COPY requirements.txt .

# 4. ຕິດຕັ້ງ Libraries ທີ່ລະບຸໄວ້
RUN pip install --no-cache-dir -r requirements.txt

# 5. ກ໊ອບປີ້ໂຄດ ແລະ ໂມເດລທັງໝົດຂອງເຮົາເຂົ້າໄປໃນ Container
COPY . /app

# 6. ເປີດ Port 8000 ເພື່ອໃຫ້ພາຍນອກສາມາດເຊື່ອມຕໍ່ເຂົ້າມາຫາ FastAPI ໄດ້
EXPOSE 8000

# 7. ຄຳສັ່ງລັນແອັບ (Run the application)
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]

ການ Build ແລະ ທົດສອບ Image ໃນເຄື່ອງຂອງທ່ານ

ເມື່ອຂຽນ Dockerfile ສຳເລັດແລ້ວ, ໃຫ້ເປີດ Terminal ຂຶ້ນມາແລ້ວພິມຄຳສັ່ງ Build ດັ່ງນີ້:

docker build -t paksong-coffee-ai:v1 .

ເມື່ອ Docker ທຳການ Build ສຳເລັດ, ທ່ານສາມາດທົດລອງລັນ Container ເທິງເຄື່ອງຂອງທ່ານໄດ້ເລີຍໂດຍໃຊ້ຄຳສັ່ງ:

docker run -p 8000:8000 paksong-coffee-ai:v1

ຕອນນີ້, ແອັບພລິເຄຊັນ AI ຂອງທ່ານໄດ້ແລ່ນຢູ່ພາຍໃນ Container ແລ້ວ! ທ່ານສາມາດເປີດ Browser ໄປທີ່ http://localhost:8000 ເພື່ອທົດສອບ.

ເອົາ Container ຂຶ້ນສູ່ AWS (Deployment)

ເມື່ອລະບົບຂອງເຮົາຢູ່ພາຍໃນ Container, ການເອົາໄປລັນເທິງ AWS ກໍເປັນເລື່ອງທີ່ງ່າຍຂຶ້ນຫຼາຍ. ຂັ້ນຕອນຫຼັກໆມີດັ່ງນີ້:

1. ສົ່ງ Docker Image ໄປເກັບໄວ້ທີ່ AWS ECR

Amazon Elastic Container Registry (ECR) ເຮັດໜ້າທີ່ຄືກັນກັບ Google Drive ແຕ່ສຳລັບເກັບ Docker Image.

2. ລັນ Image ດ້ວຍ AWS ECS ຫຼື App Runner

ເມື່ອ Image ຂອງທ່ານຢູ່ເທິງ AWS ECR ແລ້ວ, ທ່ານສາມາດນຳໃຊ້ Amazon ECS (Elastic Container Service) ຮ່ວມກັບ AWS Fargate (Serverless) ເພື່ອລັນ Container ນີ້ໄດ້ໂດຍບໍ່ຕ້ອງຈັດການ Server ເອງເລີຍ. ຫຼື ຖ້າຕ້ອງການຄວາມງ່າຍກວ່ານັ້ນ, ທ່ານສາມາດໃຊ້ AWS App Runner ເຊິ່ງມັນຈະດຶງ Image ຈາກ ECR ມາ Deploy ເປັນ Web API ພ້ອມໃຫ້ URL ມານຳໃຊ້ໄດ້ທັນທີ.

ສິ່ງສຳຄັນທີ່ຄວນຈື່ (Key Takeaways)

ບົດສະຫຼຸບ

ການນຳໃຊ້ Docker ອາດຈະເບິ່ງຄືວ່າມີຄວາມຫຍຸ້ງຍາກໃນຕອນເລີ່ມຕົ້ນ, ແຕ່ມັນແມ່ນທັກສະທີ່ສຳຄັນຫຼາຍສຳລັບນັກພັດທະນາ AI ຍຸກໃໝ່. ບໍ່ວ່າທ່ານຈະເຮັດລະບົບພະຍາກອນນ້ຳຂອງ ຫຼື ລະບົບທຳນາຍຄຸນນະພາບສິນຄ້າກະສິກຳທ້ອງຖິ່ນ, ການປ່ຽນຈາກການຂຽນໂຄດໃນເຄື່ອງຂອງທ່ານເອງ (Vientiane-based development) ໄປສູ່ການໃຫ້ບໍລິການລະດັບໂລກຜ່ານ AWS ສາມາດເຮັດໄດ້ຢ່າງມີປະສິດທິພາບຫຼາຍຂຶ້ນເມື່ອທ່ານມີ Docker ມາເປັນຜູ້ຊ່ວຍຈັດການ Container. ລອງນຳເອົາບົດຮຽນນີ້ໄປປັບໃຊ້ກັບໂປຣເຈັກ Machine Learning ຂອງທ່ານເບິ່ງ! ສະບາຍດີການໂຄດດິ້ງ!