使用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。