使用NVIDIA NeMo AutoModel對Qwen3進行LoRA微調:完整的單GPU Google Colab工作流教程
本教程詳細介紹瞭如何在Google Colab上使用單個GPU,透過NVIDIA NeMo AutoModel對Qwen3-0.6B模型進行LoRA引數高效微調。涵蓋環境驗證、原始碼安裝、配方載入與調整、命令列訓練、模型評估以及Python API呼叫。
本教程將引導你完成一個完整的端到端NVIDIA NeMo AutoModel工作流,所有操作均在Google Colab的單個GPU上執行。儘管我們使用的是單GPU環境,但該工作流核心的配置驅動訓練架構與分散式多GPU環境完全相容。本文將覆蓋環境驗證、NeMo AutoModel原始碼安裝、官方Qwen3-0.6B LoRA微調配方的載入與適配、命令列微調、模型輸出對比,以及NeMo AutoModel Python API的呼叫。
環境搭建與輔助函式 首先,我們匯入必要的Python庫,並定義倉庫、工作目錄和檢查點目錄。為了方便執行命令並即時檢視輸出,我們編寫了一個名為sh的輔助函式,它會將命令輸出流式列印到控制台,並在命令失敗時丟擲異常。
GPU檢查與NeMo AutoModel安裝 我們使用PyTorch驗證Colab執行時是否配備了CUDA相容的GPU,並獲取GPU名稱、視訊記憶體容量以及是否支援bfloat16精度。隨後,我們克隆NeMo AutoModel倉庫(如果尚未存在),並透過pip從原始碼安裝。此外,還需安裝pyyaml和peft等依賴包。最後,匯入nemo_automodel確認安裝成功。
載入與調整Qwen3 LoRA配方 NeMo AutoModel的核心優勢在於其YAML配方檔案,這些檔案定義了模型、資料集、最佳化器、精度、並行策略等所有訓練配置。我們在倉庫中查詢官方的PEFT配方(優先選擇Qwen3-0.6B的LoRA配方),載入其YAML配置並列印原始設定。為了適應Colab單GPU的有限資源,我們遞迴遍歷配置樹,將精度從bfloat16降級為float32(如果GPU不支援bfloat16),並將本地批次大小限制為4,全域性批次大小限制為8。同時,我們將最大訓練步數設為40,每40步儲存一次檢查點,並啟用檢查點功能。修改後的配方儲存到工作目錄中,同時提取基礎模型的Hugging Face識別符號。
在HellaSwag資料集上執行LoRA微調 我們透過NeMo AutoModel命令列介面啟動微調。命令中包含環境變數以停用無效的Hugging Face傳輸和tokenizer並行功能,確保Colab執行穩定。如果新版CLI語法失敗,我們還提供了使用舊版語法的回退命令。訓練過程中,模型會基於HellaSwag資料集進行引數高效微調。
對比基礎模型與微調模型輸出 訓練完成後,我們載入預訓練tokenizer和基礎因果語言模型,使用一個提示句(例如“一個人坐在屋頂上。他開始揭起屋頂瓦片。接下來會發生什麼?”)生成基線輸出。然後,我們搜尋訓練輸出目錄,找到最新的LoRA介面卡權重,使用PEFT庫將其附加到基礎模型上。重新生成輸出並與基線對比,觀察微調帶來的變化。最後,我們刪除基礎模型並清理GPU快取。
使用NeMo AutoModel Python API 除了命令列介面,NeMo AutoModel還提供了與Hugging Face介面相容的Python API。我們演示如何使用NeMoAutoModelForCausalLM直接從Python載入模型並生成文本,進一步證明其易用性。程式碼中包含異常處理,避免因版本或硬體問題中斷執行。
總結與擴充套件 透過本教程,我們建立了一個實用的NeMo AutoModel流水線,覆蓋了從環境驗證到Python API的完整流程。NeMo AutoModel透過YAML配方將分散式訓練策略與業務程式碼分離,使得同一配方可以輕鬆擴充套件到多GPU甚至多節點環境。讀者可以基於此工作流嘗試其他模型配方(如LLaMA、Gemma、Qwen-VL、FLUX等),並透過指定--nproc-per-node引數實現多GPU訓練。更多資訊請參考官方文件。
如需獲取完整程式碼,請訪問原文連結。歡迎關注我們的Twitter、加入150k+ML SubReddit或訂閱Newsletter。