参考
- 既存の日本語 llm をダウンロード。
- 会話のデータセットを用意
- LoRA で学習 (low rank adaptation 学習が早くなる。技術詳細は知らん。計算の近似らしい)
- 重みを保存
- linebot などで 推論コードを呼び出す。(generate.py など)
とりあえず、36 億パラメータの rinna で試す
10/7 開始 10/13 train_v2 学習 ok
予定 10/15 bot 化
andy-mori.txt を dictionary の配列にして generate_prompt に渡す。
メッセージは A さん B さん A さん B さんのように交互ではなくて
A A A B B A B のように不規則に繰り返される。
とりあえず what_did_you_reply_to に文章を保存して学習対象が発言したら(今回は Andy が発言したら)
reply の対象を instruction に reply を output にした。
andy が連続で発言している場合 instruction output ともに andy になっている。
もっといいアイデアを募集
conversation_list = []
what_did_you_reply_to = ""
with open('./data/andy_mori.txt', 'r', encoding='utf-8') as file:
for line in file:
parts = line.strip().split(':')
if len(parts) == 2:
instruction, output = parts
if instruction.strip() == 'Andy':
conversation_dict = {"instruction": what_did_you_reply_to, "output": output.strip()}
conversation_list.append(conversation_dict)
what_did_you_reply_to = output.strip()
with open('output.json', 'w', encoding='utf-8') as json_file:
json.dump(conversation_list, json_file, ensure_ascii=False, indent=4)
requirment
pip install -Uqq git+https://github.com/huggingface/peft.git
pip install -Uqq transformers datasets accelerate
pip install -i https://test.pypi.org/simple/ bitsandbytes
pip install sentencepiece
docker??
仮想環境作成 python3 -m venv name_of_your_env
仮想環境起動 source name_of_your_env/bin/activate
仮想環境の無効化 deactivate
jupyter notebook を使いたい場合
pip install ipykernel
ipython kernel install --user --name=name_of_your_env
pip install notebook
jupyter notebook
kernel -> name_of_your_env
ローカルで作成したモデルをいれた dokcer 環境を AWS ECR を利用して lambda 関数としてしようできるようにした(lambda のメモリが 3GB しか使えなくて 10GB ほど使う本プロジェクトでは現状動いていない状況)
まず aws-cli のインストールから -> https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html こちらからインストールしてください。
次に docker image を作成します。
マシンに docker(docker-compose)が入っていることを確認してdocker --version
、function 配下に requirements.txt を作成して次の単語を改行して入れる。
transformers
torch
peft
次に
dockerfile の FUNCTION_DIR を自分の環境のパスに変更する
そして
sudo docker build --platform linux/amd64 -t makgpt:test1 .
をプロジェクトの root ディレクトリで実行
docker images でビルドした image を確認できる
ECR の紐づけ -> https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/getting-started-cli.html のステップ2を参考に
docker tag (image-name):(tag) (aws_account_id).dkr.ecr.(region).amazonaws.com/(repo-name)
でリポジトリに push する image にタグをつけた後に
docker push (aws_account_id).dkr.ecr.(region).amazonaws.com/(repo-name)
で image を push することができる
docker pull (aws_account_id).dkr.ecr.(region).amazonaws.com/(repo-name):(repo-tag)
aws の lambda 関数のコンソールに行き、 関数の作成 -> コンテナイメージ -> 関数名の入力と ECR イメージの選択 -> 関数の作成
作成した関数のコンソールに飛び、設定からメモリを 10GB,タイムアウトを 10 分に設定してください。 また同じく設定から 関数 URL の作成をしてその関数 URL を使用する
curl "(関数 url)" -d '{"body":"{\"action\":\"こんにちは\"}"}'