皆さん、こんにちは。
私はJuliaで、ゼロから言語モデルの訓練を始めました。プリビルドのライブラリは使いませんでした。自分のBPEトークナイザー、自分の訓練ループを書き、「幻覚」にも向き合い、そして書き直しました。
FluxやLuxも試しました。どちらも強力ですが、CUDAの問題や設計の限界もありました。長い試行錯誤の末、私は別の道を見つけました。
そこで鍵となったのが PythonCall です。JuliaからPythonの生態系へ橋をかけ、必要な時だけPythonの力も借りました。それでも、このプロジェクトの中心はあくまでJuliaでした。
この経験で学んだのは、Juliaは「ただのもう一つの言語」ではないということです。Juliaは 本当の理解を得るためのプラットフォーム です。
私の現在の状況:
- 使っているモデル:LSTM (シンプルなものだけ)
- 訓練エポック:たったの 4エポック
- 結果:情報獲得率 24.7% (まだ初心者レベル)
- パラメータ数:約1億
- 訓練環境:CPU (GPUなし)
これらを測るために、自分で 「Catdown Analyzer」 という評価ツールも作りました。モデルの損失、パープレキシティ、獲得した情報の割合、残り訓練時間を推定します。
ここで皆さんに質問があります:
「皆さんは、自分だけのデータで、自分だけのモデルをゼロから訓練したことはありますか?」
既存のAPIやファインチューニングではなく、自分でモデルを組み、自分のデータで訓練し、そのモデルが時々「幻覚」を見たり、プロンプトを理解できなかったりする経験です。
多くのAIモデルは「ただの確率の計算」であり、本当の理解をしているわけではありません。損失関数も「近似値」に過ぎません。時には正解し、時には間違える。それでもモデルは学習し続けます。
私が伝えたいこと:
Juliaは、この「ゼロからの構築」を可能にします。多くの課題もありますが、それ以上に可能性を感じています。特に、スピード、メタプログラミング、そしてPythonCallによる相互運用性は、他の言語にはない大きな強みです。
最後に:
コードはまだ公開できません。まずしっかりとドキュメントを整えたいからです。いつか共有できる日を楽しみにしています。ご理解いただければ幸いです。
それでは、良いAIライフを。
(スクリーンショット:訓練中の損失カーブとCatdown Analyzerの結果)
#JuliaLang #機械学習 #言語モデル #LSTM #PythonCall

