執筆と同時に開発をしているため、投稿頻度が遅くなります。
なお、投稿者は超初心者であるためとてつもなく初歩的なミスや
無知な点があると思います。アドバイスなどよろしくお願いします。
はじめに
この記事は、「LLMを自作できるクソアプリを作る」シリーズの番外編です。
第一弾から読んでください。
投稿順序的には#2.5です。
ストックリストはこちら↓
こんにちは。@Log_ignoreです。
いろいろとしていたところ投稿頻度が著しく遅くなってしまい、
また計画にもいろいろな変更が生まれたのでそのまとめ兼備忘録として
この記事を書くことにしました。
計画の変更点
#1で大まかな流れを決めましたが、その中でも開発を進めているうちに
変更が生まれたのでそこを書いていきます。
変更点 1 フロントエンド
1つ目の変更点は、フロントエンドについてです。
前々回ではフロントエンドはhtmlとしていましたが、
pythonをターミナルからそのまま実行する形に変更したいと思います。
一通り実装が終わってまだ投稿者に余力があればhtmlも制作しますが、
本編でしっかりした形でコードの解説などを行うつもりは(今のところは)ありません。
変更点 2 モード機能
前々回、以下のようなことを言いました。
- 「学習モード」で文章を入力
- LLMが文法を勝手に学習
- 「会話モード」で何か入力
- LLMなりの文法で返答
「会話モード」と「学習モード」があるのだと読み取れます。
これを、撤廃します。
詳しいことは以下の「計画(詳細版)」の章を参照してください。
変更点 3 記事構成
前々回、最後の方で気まぐれを起こしてこんな事を言いました。
構成を今のうちに決めておきます。内容量によって変更があるかもです。
#1 計画発表・導入
#2 LLMはどうやって文法を学習するのか(文法学習システムの制作)
#3 ぼくがかんがえたさいきょうのぶんぽう by 自作LLM(#2のテスト)
#4 フロントエンド制作(html)前編
#5 フロントエンド制作(html)後編
#6 githubで公開、振り返り、まとめ
これを、フロントエンドの制作中止に伴って変更とします。
今後はコード解説などが主になりそうです。
計画(詳細版)
最終目標
LLMを自作できるアプリを制作する
詳しく言うと
自分の入力した文から学習をするAIと会話するシステムを作る
もっと細かくいうと
①pythonからの標準入力がlog.ndjsonとdict.txtに保存
②pythonが学習、文章を生成しlog.ndjsonに出力
③log.ndjsonを出力
やること
目標達成のためにやることです。
ある程度は進んで完結が見えてきています。
- 学習・生成システム構築・実装
補足
細かい技術的なことを言っていきます。
まず前提として、
log.ndjsonは会話ログを保管する場所、
dict.txtはAIの学習元となる単語置き場です。
dict.txtにはユーザーの入力が
私 は おなか が 空い て いる 。
などと、単語区切りで保存されています。この形態素解析は、
MeCabが行っています。
MeCabに関する情報は以下のリンクがわかりやすかったです。
今回データの特性や扱いやすさからjsonではなくndjson形式を使用しています。
ndjsonには、ユーザーの入力とAIの返答が以下の形で保存されます。
{"speaker":"USER","content":"こんにちは。"}
{"speaker":"USER","content":"私はおなかが空いている。"}
ndjsonの解説では以下の記事がわかりやすかったです。
学習システムには単語単位のtri-gramを利用したいと思っています。
(まだ学習モデルについては未実装)
開発段階(現在)ではmain.pyとmodel.pyに分け、それぞれに
ndjsonとの連携テスト(main.py)、文章学習テスト(model.py)という役割
を設けています。最終的に統合する予定です。
現在main.pyの制作が完了し、一段落つきました。
(要するにndjsonとtxtとの連携テストが成功!)
コード解説はv1.0まで待ってください。
終わりに
今回は、#1でざっくり立てた計画の修正と現在の進捗の発表を行いました。
初心者が頑張って作っているので、暖かく見守ってください。
応援していただけるという方はぜひ
htmlでndjsonの内容を表示する方法を教えてください(泣)
学習・生成システムの実装も頑張っていきますよ!
以上終了解散!
シツレイシマース!