ChatGPT 3.5のファインチューニングで登場、jsonlを拡張子とする、
JSON Lines。こちらライブラリとしました。
「code4fukui/JSONL: JSON Lines stringify / parse in JavaScript ES module for browsers and Deno」
ndjsonは、JSON Linesからforkしたとのことで、仕様はほぼ一緒です。以前、作った「NDJSON」をforkして、名称を変更。testも通って準備完了!
「finetune-ichigo.csv」
早速これを使って、ファインチューンイング対応した、ChatGPT 3.5の学習用のデータを生成するツール「jsonl2csv.js」「csv2jsonl.js」を作成、CSVデータから学習する手順としてまとめなおしました。(参考、ChatGPT 3.5 Fine-tuning)
このように、CSVデータをJSON Linesに変換します。
import { JSONL } from "https://js.sabae.cc/JSONL.js";
import { CSV } from "https://js.sabae.cc/CSV.js";
const csv = Deno.args[0];
const jsonl = Deno.args[1] || csv + ".jsonl";
const s = await Deno.readTextFile(csv);
const data = CSV.parse(s);
const data2 = data.map(d => {
return { messages: [
{ role: "user", content: d.user },
{ role: "assistant", content: d.assistant }
]}
});
console.log(data2)
const d = JSONL.stringify(data2);
await Deno.writeTextFile(jsonl, d);
URLインポートを短く書けるように js.sabae.cc にも設置しました。
ndjsonか、JSON Linesか?
LinkedDataのJSON表現であるJSON-LDと名前が近い点は気になりますが、、個人的には公式サイトがSSL対応している、JSON Linesを使っていくことにします。