# 使用 Lepton AI 快速部署 Taiwan-LLM-7B 全新 v2.0.1 大型語言模型(LLM)

我家裡有一張 [NVIDIA GeForce RTX 2070](https://www.nvidia.com/zh-tw/geforce/graphics-cards/geforce-rtx-2070/specifications/) 顯卡，每次在 [Hugging Face](https://huggingface.co/) 看到一些不錯的 AI 模型想在本機跑起來，無奈 GRAM 只有 8GB 而已，連個 7B 的 LLM 模型都跑不起來。上個月我在上海參加 2023 Google I/O Connect 大會，認識了一位 GDE 在 [Lepton AI](https://www.nvidia.com/en-us/data-center/dgx-cloud-lepton/) 工作，他們公司主要做 `LLMOps` 工具，可以無腦的將許多開源的 LLM 模型部署起來，而且還有免費的 GPU 資源可以使用，這樣就可以讓我們這些沒有太多 GPU 資源的開發者也可以輕鬆的玩 LLM 了。這篇文章我打算來介紹一下如何使用 Lepton AI 的工具在本機與雲端部署台灣最近釋出的 [Taiwan-LLM-7B](https://huggingface.co/yentinglin/Taiwan-LLM-7B-v2.0.1-chat) 模型。

![Created by Bing Image Creator and ClipDrop's Uncrop](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/597f25da0e904a60a67e-f9ff1a5a-b429-442a-946f-bc7a7ce50e5e.webp)

### 在本機跑 LLM 模型

Lepton AI 近期開源了他們的 LLMOps 工具，如果你想要利用他們的 [leptonai](https://github.com/leptonai/leptonai) 工具將 LLM 模型部署在本機，是完全免費的！

> GitHub: https://github.com/leptonai/leptonai

以下是利用 Lepton AI 在 Windows 10 部署 `gpt2` 模型的步驟：

1.  在 Windows 必須先啟用作業系統的長檔名支援
    
    請以系統管理員身分啟動 PowerShell 並執行以下命令：
    
    ```powershell
    New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
    ```
    
    > [Enable Long Paths in Windows 10, Version 1607, and Later](https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry&WT.mc_id=DT-MVP-4015686#enable-long-paths-in-windows-10-version-1607-and-later)
    
    如果沒有啟用這個機碼值，會在下個步驟安裝時遇到以下錯誤訊息：
    
    ```
    ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 'C:\\Users\\User\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\transformers\\models\\deprecated\\trajectory_transformer\\convert_trajectory_transformer_original_pytorch_checkpoint_to_pytorch.py'
    HINT: This error might have occurred since this system does not have Windows Long Path support enabled. You can find information on how to enable this at https://pip.pypa.io/warnings/enable-long-paths
    ```
    
2.  安裝 `leptonai` 函式庫(Python)與 `lep` 命令列工具
    
    ```bash
    pip install -U leptonai
    ```
    
    > `leptonai` 本身是用 Python 撰寫的。
    
3.  直接從本機下載 [Hugging Face](https://huggingface.co/) 的 `gpt2` 模型
    
    你可以用 `lep photon run` 搭配 `--local` 參數，在本機啟動任意一個 Hugging Face 上面的模型，執行成功後會在本機 Port `8080` 啟動一個 API 伺服器，讓你直接可以呼叫本機部署的 `gpt2` 模型！
    
    ```bash
    lep photon run --name 'gpt2' --model 'hf:gpt2' --local
    ```
    
    > 目前並非所有 Hugging Face 上面的模型都可以透過 `leptonai` 來執行，而是要先透過一層 [Photon](https://web.archive.org/web/20240127223832/https://www.lepton.ai/docs/walkthrough/anatomy_of_a_photon) 的封裝，才能順利跑起來。目前 Lepton AI 已經預先設計了市面上知名 LLM 模型的 Photons 物件，所以你才能這麼簡單的用一行命令跑起一個 LLM 模型，你可以參考 Prebuilt photons 查閱所有已支援的模型。
    
4.  測試本機部署的 LLM 模型
    
    以下是透過 [Postman](https://www.postman.com/) 測試 `gpt2` 模型的用法：
    
    ![Postman](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/482077833c94916b3b89-e81ae44b-39f7-43da-a8ab-9dc0dabf8f44.webp)
    
    以下是透過 cURL 直接呼叫的命令範例：
    
    ```powershell
    curl -X 'POST' 'http://localhost:8080/run' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"inputs": "Once upon a time"}'
    ```
    

### 在 Lepton AI 的雲端部署 LLM 模型

部署地端與部署雲端的步驟還蠻相似的，參數與命令都差不多，以下是部署 [yentinglin/Taiwan-LLM-7B-v2.0.1-chat](https://huggingface.co/yentinglin/Taiwan-LLM-7B-v2.0.1-chat) 模型的步驟說明：

1.  安裝 `leptonai` 函式庫(Python)與 `lep` 命令列工具
    
    請參閱本文前面的說明。
    
2.  登入 Lepton AI 的 Dashboard 頁面並取得登入 Lepton Cloud 的命令
    
    > 你可以用 Google 或 GitHub 帳號登入。
    
    登入後可以從 Dashboard 頁籤找到 Getting Started 段落，點擊展開 Deploy in the cloud 即可找到登入 Lepton Cloud 的命令，請將這個命令複製到你的命令列工具中執行。
    
    ![Getting Started](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/515ae2e065e85a227aa3-c857c615-5906-4269-b533-d15fa72ff619.webp)
    
    ```powershell
    lep login -c oooooooo:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ```
    
    > 其中的 `oooooooo` 是你的 workspace id
    
3.  到 [yentinglin/Taiwan-LLM-7B-v2.0.1-chat](https://huggingface.co/yentinglin/Taiwan-LLM-7B-v2.0.1-chat) 申請使用授權
    
    打開頁面後會看到 `Acknowledge license to accept the repository.` 的訊息，請點擊 `Log in` 或 `Sign up` 按鈕進行申請。
    
    ![Acknowledge license to accept the repository](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/9dc6978d61e9c33e50c1-c09846c6-1b87-4e59-9fd5-2f7313a06012.webp)
    
    申請時不用輸入太多資料：
    
    ![Acknowledge license to accept the repository](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/27cf6a1e30b70653a969-07347359-aeb7-4f20-88e4-654544c9e80c.webp)
    
4.  到 Hugging Face 的 [Access Tokens](https://huggingface.co/settings/tokens) 頁面建立一個 `Hugging Face Hub Token`
    
    ![Hugging Face Hub Token](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/0717cc4a6d77240b23a5-4c7a6f5f-8b98-4706-9643-3e3c338faf4c.webp)
    
5.  先利用 `lep secret create` 建立一個 `HUGGING_FACE_HUB_TOKEN` 密鑰 (Secret)
    
    ```powershell
    lep secret create -n HUGGING_FACE_HUB_TOKEN -v 'hf_xxxxxxxxxxxxxxxxxxxxxx'
    ```
    
    > 其中 `hf_xxxxxxxxxxxxxxxxxxxxxx` 是你的 `Hugging Face Hub Token`
    
6.  使用 `lep photon run` 命令建立一個可在 Lepton Cloud 執行的 Photon 物件
    
    ```powershell
    lep photon run --name 'taiwan-llm-7b' --model 'vllm:yentinglin/Taiwan-LLM-7B-v2.0.1-chat' --resource-shape 'gpu.a10' --secret 'HUGGING_FACE_HUB_TOKEN'
    ```
    
    > 這裡的 `--resource-shape` 是指你要建立的雲端 VM 規格，由於 LLaMA 7B 模型所需的 GPU 記憶體比較大，至少要 24GB GRAM 才能跑得動，所以我要選用 `gpu.a10` 這個等級才能成功部署 [yentinglin/Taiwan-LLM-7B-v2.0.1-chat](https://huggingface.co/yentinglin/Taiwan-LLM-7B-v2.0.1-chat) 這個模型。目前 Lepton Cloud 支援的規格與計價標準可以參考 [Resource Shapes](https://web.archive.org/web/20240127223832/https://www.lepton.ai/docs/walkthrough/resource_shapes) 文件。
    
    > 如果你執行的是 Hugging Face 公開的模型，那就不需要加上 `--secret` 參數。
    
7.  等待部署完成
    
    建立一台 `gpu.a10` 大約要等待 5 ~ 10 分鐘左右的部署時間，你可以用以下命令查看部署進度與狀態：
    
    ```powershell
    lep deployment status -n 'taiwan-llm-7b'
    ```
    
    你也可以到 Lepton AI 的 Dashboard 頁面的 Deployments 頁籤查看部署狀態：
    
    ![Deployments](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/51a404fc55da9ebaf4a7-95ed0666-d08b-4fe6-999f-1f5238f405b1.webp)
    
8.  測試雲端部署的 LLM 模型
    
    部署完成後，你會在 `taiwan-llm-7b` 的部署頁面看到 `Demo`, `API`, `Metrics`, `Events`, `Replicas` 等頁籤，可查看雲端部署的各種細部資訊。
    
    其中 `Demo` 頁籤可以讓你很輕鬆的跟你剛部署的模型進行互動，直接呼叫該模型的 REST API 來測試。操作步驟如下圖示：
    
    ![Deployments > Demo](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/dbb2ed6dabaa8e5b1353-a3f8047c-c4be-4861-ae23-c88273bfbfd2.webp)
    
    > 注意: Model 參數請輸入 `yentinglin/Taiwan-LLM-7B-v2.0.1-chat`。
    
    然而 `API` 則會顯示該模型完整的 REST API 說明文件，你可以從這裡找到如何呼叫該模型的 REST API 服務。
    
    ![Deployments > API > Create Chat Completion](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/a15d0f404d716d0edacf-feb10eb2-3902-4634-bb1a-52b0bc308d3f.webp)
    
    我依據 `API` 頁籤的說明，用 Postman 測試了一下，以下是測試的結果：
    
    ![Postman](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e1cde5fdc5ad782ae2ff-74338987-277c-4118-9174-7e0463693ecd.webp)
    
9.  提高 LLM 模型部署規模
    
    使用雲端的好處，就不是不用先買好一堆 A10 顯卡，如果想要大規模部署，直接調整 Replicas 數量即可。
    
    例如你想要部署 5 台 A10 虛擬機，可以直接調整 Replicas 數量為 5：
    
    ```powershell
    lep deployment update -n 'taiwan-llm-7b' --min-replicas 5
    ```
    
    > 說個秘密: 雲端部署的好處，就在於不用的時候隨時可以移除部署，以節省費用。只要 Replicas 數量更新為 0，也可以避免被收費喔！
    
10.  移除雲端部署的 LLM 模型
     
     基本上你只要輸入以下命令就可以列出目前所有 Deployments 物件：
     
     ```powershell
     lep deployment list
     ```
     
     移除部署：
     
     ```powershell
     lep deployment remove -n 'taiwan-llm-7b'
     ```
     
     當然，如果你下次想再重新部署的話，可以這樣執行：
     
     ```powershell
     lep photon run --name 'taiwan-llm-7b' --resource-shape 'gpu.a10' --secret 'HUGGING_FACE_HUB_TOKEN'
     ```
     
     你可以保留 Photon 物件在 Lepton Cloud，儲存這個物件是不收費的，但如果你想要移除 Photon 物件的話，可以這樣執行：
     
     ```powershell
     lep photon remove -n 'taiwan-llm-7b'
     ```
     

### 總結

老實說，要在地端玩這些 Generative AI 模型是蠻花錢的，光是前期投資的 GPU 設備，少說都要花上好幾十萬，才能取得門票而已，一樣是一種有下限、無上限的遊戲。如果你是個獨立開發者，或是一個小型的團隊，想要玩玩這些 AI 模型，但又不想花太多錢，那麼像 Lepton AI 這種雲端部署服務 (又稱 `LLMOps`) 就是一個不錯的選擇，你可以先用雲端資源進行小規模的實驗，等到你的模型開發完成，或是想要擴大部署規模，到時再來考慮要不要買更高階的 GPU 設備來跑，這樣可以節省不少研發成本！

目前市面上有許多開源的模型，尤其是 Hugging Face 上面的模型有超過 30 萬個模型，部署這些模型都需要足夠的 GPU 資源才能跑起來，所以為什麼 `LLMOps` 會成為主流就是這樣，我們需要一個更好、更簡便的方式來部署這些 LLM 大語言模型。換句話說，如果你自己 fine-tune 了一個模型，想要給客戶試用，怎樣是最快的方法呢？當然是想找一個能夠快速部署的雲端服務，讓客戶可以快速試用你的模型，這樣才能讓客戶更快的接受你的產品，這就是 `LLMOps` 的價值所在。

目前 Lepton AI 正在發展一套名為 TUNA 的工具，可以提供你一套簡易的 API 就能 fine-tune 任何一套 LLM 模型，目前還在 Beta 階段，相信不久的將來就會正式釋出，到時候我們就可以更輕鬆的 fine-tune 自己的模型了！👍

最後，分享一個 Lepton AI 的 [Playground](https://web.archive.org/web/20241226211047/https://www.lepton.ai/playground) 遊樂場，這邊部署了十多種開源的 AI 模型，目前有 Illusion Diffusion, Inpainting, Stable Diffusion XL, Whisper X, Llama2 7b, Llama2 13b, Llama2 70b, Code Llama 7b, Code Llama 13b, Code Llama 34b, Artistic Text, QR Code 等模型，你如果單純想實驗這些模型的效果，可以來這邊體驗一下，完全免費！

![Lepton AI Playground](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5111404322132d401b9f-557360b2-e183-4b91-b617-93d7a52d1937.webp)

### 相關連結

-   [\[新 LLM 模型封測中\] Taiwan-LLM-7B 資訊整理 | by SimonLiu | Oct, 2023 | InfuseAI](https://blog.infuseai.io/taiwan-llm-7b-info-165f53147e6c)
-   [yentinglin/Taiwan-LLM-7B-v2.0.1-chat · Hugging Face](https://huggingface.co/yentinglin/Taiwan-LLM-7B-v2.0.1-chat)
-   [Access Tokens - Hugging Face – The AI community building the future.](https://huggingface.co/settings/tokens)
-   [Build AI The Simple Way | Lepton AI](https://www.nvidia.com/en-us/data-center/dgx-cloud-lepton/)
    -   [Documentation | Lepton AI](https://docs.nvidia.com/dgx-cloud/lepton/get-started/)
