地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

メモ:granite3.1-denseのFineturing(LoRA)をColabでやってみる。

IBMが公開しているモデルgraniteがいつの間にか3.1になっていました。そのまま試しても面白くないので、granite-3.1-2b-instructのファインチューニングをLoRAで実施してみます。丁寧にcookbookとして、基本的なコードが公開されています。ありがたく利用します。granite3.0から変更されてないことと、そのままでは多少エラーが発生するので、適宜Fixして使っています。

 

Colab T4環境を利用しました。

 

結果:

ファインチューニング後には言い回しが変更され、英語での回答も日本語となりました。LoRAには限界あるとは思いますが、いい感じのデータセットがあれば、2BをゲームPC程度でチューニングして遊ぶのも楽しいかもしれません。〇〇用語といった特殊な用語を教師データとすると、どの程度まで有効なのかは気になります。どこかに参考文献あるのでしょうか。

 

github.com

 

学習用データ:

cookbooknに公開されているrecipeでは、graniteのモデルでベースのデータセットを改変し新しいデータセット(例では海賊風の会話)を作成しています。しかし、granite3.1-denseを利用して日本語のデータセットに〇〇風の味付けを付け加えるのは、荷が重そうな味見結果でした。そこで、時間を節約するために前に作ったモデルを利用することとしました。

 

bwgift.hatenadiary.jp

 

レーニング準備:

T4環境のVRAMの瀬谷区に合わせてバッチサイズを小さく。

    per_device_train_batch_size=1, # Reduced from 6 to 2
    per_device_eval_batch_size=1, # Reduced from 6 to 2

その他、ライブラリのバージョンが上がったためエラーになってしまうところをちょこちょこと訂正しました。

 

かかった時間:

Model Load Time: 64.40367837800022 seconds
Training Setup Time: 4.85179586599952 seconds
Training Time: 4826.068798849 seconds (80.43447998081666 minutes)

バッチサイズを小さくしたので、そこそこ時間がかかりました。それでも、2時間もかからずに学習完了。映画を見ていたら終わっていました。

 

比較:

チューニング前

'inheritance'ってどういう意味?
'Inheritance' in the context of programming or object-oriented design refers to the ability of a new class to inherit properties and methods from a previously defined class. This concept allows for code reuse and promotes a hierarchical structure, where more specific classes can extend and modify the behavior of more general classes.

In other words, inheritance is a mechanism that enables a child class to acquire the attributes and methods of its parent class, creating a "is-a" relationship. For example, a

チューニング後

え、'Inheritance'って、子から親の属性とか、全部使えるんだ!  まじで便利!  例えば、クラスAとBの子クラスCが、Aの属性とか、Bの属性も使えるんだ!  それは、子クラスが親の属性とか、もう親からもう親の属性全部使えるんだって!  だから、子クラスが親の属性とか、もう親の属性全部使えるって、'Inheritance'って意味!

この程度の学習でも、言い方変わっています。また、日本語で質問しても英語で回答していましたが、ファインチューニング後は日本語で回答するようになっています。

 

チューニング前

まどか☆マギカで一番かわいいのは?

お答えしますが、個人の好みによって異なることをご了承ください。ただし、多くのファンから支持されているキャラクターとしては、魔法のような能力を持つ「マギカ」や、ユーモア豊かで優しくて優雅な「ココナッツ・デ・ムーア」が挙げられます。どちらもマドカ☆マギカの人気キャラクターとして広く知られています。

チューニング後

まどか☆マギカ、まじで可愛いよね!

返答にはなってませんが、なんとなくいい感じ?

 

チューニング前

1+1*2+3/2+2^10を計算してください。計算が終わったら検算をしてください。最後に最終的な計算経過と結果を答えてください。

お手数ですが、日本語での説明はできません。以下、ステップバイステップで計算を行います:

1. まず、括弧内の計算を実行します:3/2 = 1.5
2. 次に、指数を評価します:2^10 = 1024
3. 次に、式から左から右に進みます:1 + 1 * 2 + 1.5 + 1024
4. 乗算を行います:1 * 2 = 2
5. 残りの計算を行います:1 + 2 + 1.5 + 1024 = 1028.5

したがって、1+1*2+3/2+2^10の結果は1028.5です。

検算を行うときは、以下のようにします:
1. まず、括弧内の計算を実行します:3/2 = 1.5(1028.5に一致)
2. 次に、指数を評価します:2^10 = 1024(1028.5に一致)
3. 残りの計算を行います:1 + 1 * 2 + 1.5 + 1024 = 1028.5(1028.5に一致)

これにより、結果が正しいことが確認できます。

最終的な計算経過と結果は以下の通りです:
- 1+1*2+3/2の部分は、1 + (1 * 2) + 1.5 = 4.5になります
- 次に、2^10を加えて、4.5 + 1024 = 1028.5になります

最終的な結果は1028.5です。

チューニング後

まじで、1+1*2+3/2+2^10って、まじで計算してみたら、1+2+1+1024って結果だよ!  そして、1+1*2+3/2+2^10って、まじで計算したら、1+2+1+1024って結果だったんだ!  まじで、1+1*2+3/2+2^10って、1+2+1+1024って、同じ結果だよ! 🤯

まじ、答えは間違っていますが、大きな破綻はありません。

 

今年はここまで・・・。