前言:
幾年前曾將家裡的貓砂機用樹莓派改裝,按照原本的控制邏輯用Python實做,並用於貓砂機控制。
在survey Gemma3:270M這種微型LLM時提到,Gemma3:270M具有很強的指令跟隨能力,貓砂機的馬達控制流程本質上就是FSM(有限狀態機)系統,而FSM的狀態處理本質上就是查表法,那麼,將Gemma3:270M的指令以「目前狀態」和「觸發IO」代入,生成「下個狀態」,不就能把Gemma3:270M應用在FSM(有限狀態機)系統,好像不錯,練習微調LLM,容易入門。
實做:
讓claude-code分析之前那個貓砂機程式,讓它把馬達控制的流程看懂,然後生成一個(FSM)有限狀態機的狀態表,接著讓它分析Gemma3:270 Finetune程式,程式內它的DataSet(資料集)用的是ChatML的格式,讓claude-code把馬達控制的狀態表轉成ChatML格式。
修改Gemma3:270 Finetune,將資料改用ChatML格式的DataSet,然後用colab執行,因為貓砂機的FSM狀態表不多,claude-code生出整個DataSet只有70條,整個微調訓練時間大概10分鐘即可完成。
成果:
用Ollama載入後,用固定格式問它,得出固定格式結果,如圖:
輸入「current_state: IDLE」「trigger_event: CMD_START_CLEAN」,
固定得出「next_state: STATE1_FORWARD」IO「in1_in1: 0, in2_in1: 1」。
整個Lab順利又快速,證明微調微型模型,可用於FSM(有限狀態機)的系統控制,測試時,幾次輸入,看起來結果一致性非常非常高(沒遇過結果錯誤的)。
程式碼: