Geminiと同様の方法で作られた軽量モデル「Gemma」を使ったという話。
- IgakuQA と呼ばれる医師国家試験用のデータセットを使って、Gemmaに解かせてみた
- 使ったモデルはgemma-7b-it
- 参考したページは以下の通り
- しかし3点ほど問題があった
1. 'ascii' codec can't decode byte 0xe7 in position 41
- IgakuQAにあるデータセット読み込みのscriptで引っ掛かる
-
import locale
- 文字コードを指定してやることで解決した
- 但し、もう一度行ったところ再現性が無かったので、2.だけの対応で良いかもしれない
2. モデルにデータセットを入力すると以下のエラー文が出る
probability tensor contains either `inf`, `nan` or element < 0
- 確率テンソルにinf , nan, 要素が0 のどれかがあると判定されてエラーが出る模様
- 同様の問題が以下のページにもあった
- model = model.bfloat16() を設定することで解決
- 原因は不明 (半精度浮動小数点数を指定してやるのが重要?)
3. gemmaの出力と回答の比較
- gemmaの回答に無駄な出力が多かったため、うまく正答率を出すことが出来なかった
- 【LLM入門~】 のページで、出力から不要な文字を削除する処理がある
-
def reshape_ans(input):reshaped = input.strip()reshaped = reshaped.split("(")[0]reshaped = reshaped.split("です")[0]reshaped = reshaped.split("は")[0]reshaped = reshaped.split("に")[0]reshaped = reshaped.split(" ")[0]reshaped = reshaped.replace("、", ",")reshaped = reshaped.lower()return reshaped
preds_reshaped =for k in preds:k = reshape_ans(k)preds_reshaped.append(k) - サンプルコードだと、不要な文字を上手く削除できていない
- gemmaの出力の各行の1文字目が選択肢から選んだアルファベットなので、そこだけを取り出せば良い
-
preds_reshaped =for k in preds:k = reshape_ans(k)preds_reshaped.append(k[0])
- 結果はgemma-7b-itで30%程度の正答率であった
- 元の【LLM入門~】 ではサイバーエージェントのオープンモデルであるopen-calc-1bの正答率は25%程度であった
- 7b なら、サイバーエージェントのモデルも30%程度の正答率を出すかもしれない (試してない)