iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
生成式 AI

Local LLM infra & Inference 一部曲系列 第 25

Day25 - vLLM實作篇PART4:安裝到推理 (Windows version)

  • 分享至 

  • xImage
  •  

前言

前面講完linux的vLLM安裝使用,這次來介紹Windows版本的使用方式,筆者之前剛好借到一台windows電腦+RTX 4060 Ti * 2,就用這台從0開始設定。如果是CPU,這邊補充昨天分享過的教學連結

因為圖片很多,往下滑之後可能不會想再往上滑,所以先放章節大綱:

  • ⚙️ 安裝 Docker Desktop
  • 🐳 pull vLLM image
  • 📦 啟用 docker 容器
  • 💻 在 Windows 電腦做 vLLM 測試
  • ⏸️ 停止 docker 容器

此github issue看到,目前在vLLM可以跑的方法是使用Docker Desktop!

https://ithelp.ithome.com.tw/upload/images/20240923/201681159bo2mOBVcq.jpg
(圖源: reddit,下面留言好讚喔)


⚙️ 安裝Docker Desktop

官方文件下載

https://ithelp.ithome.com.tw/upload/images/20240923/20168115CjK5fguQTO.png

安裝是可以基於Hyper-V或WSL,如果要確認Hyper-V有沒有打開,可以從 Windows PowerShell (管理員) 下以下的指令:

Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
https://ithelp.ithome.com.tw/upload/images/20240923/20168115fDmnNgXqhK.png

如果State顯示為Disabled,代表Hyper-V未啟用。
這時按下Win + R,輸入optionalfeatures,然後按Enter。
https://ithelp.ithome.com.tw/upload/images/20240923/20168115VtWMVU9pfc.png

把Hyper-V都打勾,然後重新開機,再確定一次有沒有啟用。
https://ithelp.ithome.com.tw/upload/images/20240923/20168115M07U6v5M5P.png

之後再安裝Docker Desktop,理論上應該就可以直接執行了。
(如果有特定的帳號,就需要將user加入至docker_group)
https://ithelp.ithome.com.tw/upload/images/20240923/20168115eYHDZxN7WK.png


🐳 pull vLLM image

接下來打開cmd,然後看看dockerhub上vllm官方的image,沒意外的話就是選最新的。

docker pull vllm/vllm-openai:latest
https://ithelp.ithome.com.tw/upload/images/20240923/20168115yCLHqD1b5a.png

中間可能需要等待一下。
https://ithelp.ithome.com.tw/upload/images/20240923/20168115ILLonKyrxp.png

pull完之後就可以在Docker Desktop中看到image了。
https://ithelp.ithome.com.tw/upload/images/20240923/20168115XEA0e6NM5U.png


📦 啟用docker容器

接下來同樣打開cmd,指令可以從vllm官方文件 看到。

docker run --gpus all -p 8001:8000 --ipc=host vllm/vllm-openai:latest --model yentinglin/Llama-3-Taiwan-8B-Instruct

8001:8000代表windows電腦的8001 port對應到docker中的8000 port。

如果模型有需要的話,可以在前面加上--env "HUGGING_FACE_HUB_TOKEN=<secret>"。同樣的,後面也可以加上一些前面學過的參數,因為VRAM只有16GB * 2,這邊是加上了--pipeline-parallel-size 2,分散了模型的參數量到2個GPU上。

可以從docker點進去容器的logs看,主要下載模型會需要一段時間,這邊大概是花了半小時才完成下載,因為先前沒有幫容器命名,所以現在是一個奇特的隨機名稱。

如果想要改名請用docker rename [old name] [new name],或是一開始就加上--name [name]
https://ithelp.ithome.com.tw/upload/images/20240923/201681152MwbtylBbq.png

等看到熟悉的Uvicorn running就完成啦。
https://ithelp.ithome.com.tw/upload/images/20240923/20168115c6hjIuLK13.png

看一下nvidia-smi,有成功載入了。
https://ithelp.ithome.com.tw/upload/images/20240923/20168115u5kEgePsLB.png


💻 在windows電腦做vLLM測試

前面幾天的測試都是用python call API,這次則是在cmd簡單curl看看!
(cmd的curl方法稍微不同,需要用以下格式)

curl http://localhost:8001/v1/models
https://ithelp.ithome.com.tw/upload/images/20240923/201681155nvMsFng1J.png

curl -X POST http://localhost:8001/v1/completions -H "Content-Type: application/json" -d "{\"model\": \"yentinglin/Llama-3-Taiwan-8B-Instruct\", \"prompt\": \"嗨嗨你是誰\", \"temperature\": 0}"
https://ithelp.ithome.com.tw/upload/images/20240923/20168115AHc9HlJTbU.png

上面是文字接龍的版本,下面是一般chat的版本。

curl -X POST http://localhost:8001/v1/chat/completions -H "Content-Type: application/json" -d "{\"model\": \"yentinglin/Llama-3-Taiwan-8B-Instruct\", \"messages\": [{\"role\": \"system\", \"content\": \"zh-tw. You are a helpful assistant.\"}, {\"role\": \"user\", \"content\": \"你喜歡吃蘋果派嗎?\"}], \"top_p\": 0.9, \"temperature\": 0.1}"

這邊可能會看到 "finish_reason":"stop","stop_reason":128009
至於 "stop_reason":128009是什麼,從這個issue的討論來看,其實llama3的EOS token id就是128009

其他使用方式如OpenAI API、FastAPI docs、接gradio介面聊天就如同前面幾天教過的樣子,就不再重複提了。


⏸️ 停止docker容器

如果沒有停止docker容器的話,就會繼續卡著VRAM不放,在玩完之後要記得做docker stop Container_ID,確認VRAM有被釋放掉。

https://ithelp.ithome.com.tw/upload/images/20240923/20168115mIVFAvc32v.png

最後再次檢查nvidia-smi,資源有成功被釋放掉了。

https://ithelp.ithome.com.tw/upload/images/20240923/20168115CfwwGMuYSW.png

補充,如果想要完全停止每次開機都會跳出來的Docker Desktop,右下角icon區,找到docker的鯨魚,就可以右鍵quit它囉
https://ithelp.ithome.com.tw/upload/images/20240923/20168115l1Dln8MuxQ.png


章節總結

這章節如果有docker和前面一般使用過vLLM的基礎在,用起來就是非常簡單愉快,只需要等待模型下載的時間,就可以無痛體驗推理加速的感覺。

另外筆者發現,寫實作應用篇真的是超級簡單暴力,不用再看很多文獻慢慢消化內容,這是目前寫起來最快速的一天,接下來最後的最後要繼續探討infra相關的知識! ✨

https://ithelp.ithome.com.tw/upload/images/20240923/20168115zIE8S4PkpQ.jpg
(圖源: securityboulevard)


上一篇
Day24 - vLLM實作篇PART3:FastAPI與vLLM docs尋寶之旅
下一篇
Day26 - Infra篇PART1:多台server如何一起工作?
系列文
Local LLM infra & Inference 一部曲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言