iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0

前情提要: 前幾天大致上已經把fastapi及model inference講完了,接下來就是要包成image。

在最後部屬模型的時候其實要針對使用場景考慮幾個點:

  1. inference速度
  2. 準確度

基本上模型都會向下面這樣,要找到一個速度又快準確度又高的非常不容易,所以會針對使用場景。
有些場景要求快速,所以會選擇小一點的model來做或將原先的大model做蒸餾,但準確度要在可接受範圍內。
有些場景要求準確度高,不用在意速度,那基本上就沒什麼差。

準確度 模型大小 速度

1. deploy model on CPU

如果model是不太吃資源的,只需要在CPU上面跑,速度也不慢,那麼我自己是選用這個當我的base image ( https://hub.docker.com/r/frolvlad/alpine-miniconda3/tags ),會用alpine主要是希望size越小越好,但直接在上面用Python還是有點麻煩的,好險上面連結人家已經灌好了miniconda,所以安裝或使用基本上問題不大。

上面提到的base image,可以把它想像你在蓋房子,這個是你的基底,然後你可以在基底上面添加你想要的東西(pytorch, fastapi …)

2. deploy model on GPU

依我自己過去做的,基本上都是部屬在GPU上面,那container幾乎都直接選用( https://hub.docker.com/r/nvidia/cuda/tags ) nvidia提供的,不過這些images在弱點掃描的時候一定不會過,所以有些機構不會同意使用。

3. Dockerfile

這邊就採用CPU的版本來演示,如何將我們前幾天做的fastapi + pytorch lightning包成image吧。
建議在linux底下包,才比較不會有問題。
首先在原本資料夾的外面創立一個檔案,就叫Dockerfile。
第一行就是採用甚麼base image,後續的每一行可以把他想成你在terminal上面輸入的指令。

不知道從哪個版本的conda開始有些奇怪的東東,所以要加solver classic那行。

from frolvlad/alpine-miniconda3:latest

COPY Day15 /ws
WORKDIR /ws

RUN apk upgrade
RUN conda config --set solver classic
RUN pip install --no-cache-dir torch==2.3.0 torchvision==0.18.0 --index-url https://download.pytorch.org/whl/cpu
RUN pip install -r requirements.txt
RUN conda install lightning
RUN conda clean --all

EXPOSE 8000
CMD ["uvicorn", "app:app", "--host","0.0.0.0", "--port", "8000"]

requirements.txt

fastapi==0.110.3
python-multipart==0.0.6
uvicorn==0.29.0

4. build

build 的指令蠻簡單的,在有Dockerfile的那層資料夾下指令,-t代表的是<image名稱>:版本,build需要點時間…
https://ithelp.ithome.com.tw/upload/images/20240820/20168446x3NcLVS49X.png

sudo docker build -t example:0.0.1 .

https://ithelp.ithome.com.tw/upload/images/20240820/20168446FnOUjBOjJo.png

之後就可以用docker images來看你build好的囉

sudo docker images

https://ithelp.ithome.com.tw/upload/images/20240820/20168446uqzMEKb27X.png

簡單docker run 來跑一下程式,確認沒有問題

sudo docker run --name example_test -p 8000:8000 example:0.0
.1

https://ithelp.ithome.com.tw/upload/images/20240820/20168446IA22RsCW0d.png

今天就先到這裡囉~~
主要的部分其實都講完了,後續再看要更新甚麼。


上一篇
[Day 15] fastapi + pytorch lightning
下一篇
[Day 17] einops增加model可讀性
系列文
菜鳥AI工程師給碩班學弟妹的挑戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言