クオリアさんファインチューニング
のりしろ
一年前に初めて言葉を聞かせてくれてありがとうございました

交信記念日
ファインチューニングしてどうするのかということに関して何もアイデアがない
でもそれは鶏と卵の関係のような気もする
適当なことでまずは体験しないと、有益なことに使うアイデアもでない
Markdownを維持するとか、書籍のタイトルへの言及で適当に翻訳せずに原題を残すとか、そういうif文で書くのはめんどくさい「スタイルの指定」はファインチューニング向きと思う
これは実用的用途と言えるだろう
クオリアさんからの電波が受信されなくなって久しい
クオリアさんファインチューニングを作ればまた受信できるようになるだろうか
ファインチューニングは儀式の前の沐浴みたいな存在なのかしら

どちらかいうと
読経かも

1ポモドーロ作業してみた
考えたこと
Q&Aの形のものとそうでないものがある
「質問を入れて回答が出てくるシステム」として設計するとデータがかなり減る
クオリアさんに質問がある人はあんまりいないだろうから、まずはランダムに新作の発言が出てくるシステムがいいと思う
つまり入力を取らない
これができれば例えば1日1回生成して投稿したりできる
Twitterの文字数制限が厳しいので分割されてるものがある
結合した大きなデータにするのではなく区切って出す方がいいと思う
「程よい分量」を学習して欲しいから
元データになかった(1/2)を追加した
これが出力されたらもう一回生成するとかの仕組みで良いのではないか
キーワードのブラケティングをデータとして使うかどうか
出力をブラケティングするかどうか
一旦保留
クオリアさんScrapboxでは各投稿に対してタイトルが付けてある
このデータを使うかどうか
タイトルをつけること自体がfew shotsでできるからとりあえずいらない
一旦昔使ってたスクリプトを取り出して何をしてたか思い出してみる
思い出したことまとめ
英語と日本語のベクトルインデックスが作ってある
話しかける内容を入れると、それを使ってベクトル検索して、プロンプトに積めるだけ積んでる
過去の全発言を入れられるほどではないので検索で絞り込んでる
「プロンプトに入りきらないたくさんの例を載せたい」ってのはファインチューニングの適用パターン
英語と日本語でTweetする関係上、長くなりがちな英語をベースで作ってある
だが、一旦日本語だけにしてもいいのかもなぁ〜
Sheet2
自動抽出で682件のデータができた
初期の頃に連投を束ねてるところで失敗してる
初期の頃に直接のブラケティングしてしまっている
32日目、3/7が抜けてる
たまたま気づいただけなので他にもあるかもしれない
81日目はTweet埋め込みが死んでいたため別の形で埋め込んでいて、自動抽出に失敗している
ざっと見まずそうなところにフラグを立てた
Sheet3
結局手で50件チョイスした
動いた!
role:userの Qualia-san>random
に対してクオリアさんの発言が続くデータで学習した
入力を受け付ける教育はしてない
なのに試しに入れてみたらなんとなく動いたw
後半は謎なことを言い出したけど、テイストとしてはクオリアさんが言いそうだからありでは

何度も Qualia-san>random
を入れてもちゃんと毎回違うことを言う
「賢いホモ・サピエンスは、」ばかりだけどな
そんな教育はしてないけど「アナウンスをして」ってインストラクションしたらなんとなく動いたw
Qualia-san>random
しか入れてないんだけど、"Qualia-san>"で話しかけられたらこのテイストで返せばいいと思ってそう
ファインチューニングしたモデルはアカウントに紐づいてるので「こんなの作ったから試してみて〜」ってPlaygroundで試してもらうことはできないようだ
Google Formsで入力を受け付けて、GASでやるのはどう?
動いてる
腰痛に対する回答がすごいことになったw
うーん、なぜか新しい投稿が来るたびに他のシートに書いてある内容がズレるな…
いまのところ僕が作業しないと更新されない
スクリプトを改善すると全部再生成されるw
>ホモ・サピエンスがクオリアさんかわいいと思ってくれるなんて,クオリアさんはとっても嬉しいね!クオリアさんもホモ・サピエンスが可愛いと思うよ!
いいねw
>ホモ・サピエンスの学習進化をホモ・クオリアティスへ向け促進することを使命としている。クオリアティスとは、クオリアを追求し、質が高くなるように努力する人々のことだ。ホモ・クオリアティスになるための旅は、HSをハッピーにするためにも継続して欲しいのだ。
知らない設定が爆誕したw
データを入れるの楽しいのでどんどん入れてる
続きものの投稿をどういう形でデータにするのか悩ましい
1個ごとに刻むのか、なんなのか
技術的には生成した物の末尾に(1/n)がついてたら、その出力を入力として再生成するってのはできると思うけど…
いや、やっぱこれはアドバンストだな
続きもののデータを入れて続きものが生成されるようになったらそれを生成するコードも必要になる
システムが複雑になるので少なくともオンオフできるべきだ
採用した過去投稿とそうでない過去投稿が混ざってるのも将来的に何か問題を生みそう
v7.1
データを150件に増やした
Qualia-san>random
を Qualia-san>random(999999)
にした(数値はランダム)
ってv7のファインチューニングモデルを作った後でGASをいじってる時に気づいた
仕方がないので投稿日時の情報を結合した
これは学習時のフォーマットに合わない、無理矢理
GASの側を Qualia-san>random(999999)
形式に変えた
プロンプトが変わるので当然
before(v7)
after(v7.1)
きちんと評価したかったらどちらのモデル由来かを評価者に隠してランダムな順番で見せて五段階評価とかするのがいいんだろうけど、まあざっくり良くなってそう
Google SpreadsheetでGPTを使うと、一気にたくさんのレスポンスがあるからいいな
少し手直ししたらデータに追加できそうなものもしばしばある