AIの最先端モデルのCode Llamaを試しました
1.概要
AIがCodeを作成する最先端のモデルですが、個人環境で動作するか確認をしました。Ryzen3 3200G + nvidia 1660 Super環境で簡単なモデルを実行することができました。内容は良くわかっていませんが、実現できた内容を記述します。
2.詳細
(a) nvidia + docker + cuda + pytorchの環境構築
nvidia-driver-535 を利用
dockerはubuntu-20.04.6の標準
docker hubのnvidia/cuda:11.7.1-runtime-ubuntu20.04を利用
pytorchは、Stable(2.0.1)利用
(b) fibonacciにチャレンジ
参考資料のLlama 2 learns to codeに従いfibonacciにチャレンジ。
しかし、float32の演算ができるGPUが必要とのエラーで終了。
(c) Google Colabで実行された内容の再現
参考資料に従いGoogle Colabで実行された内容をローカル環境で再現。
動くものなんだ。
3.所見
満足できる速度で実行できました。モデル(約10GB)、チェックポイント(3.5GB)と巨大です。
CNNと違ってLLNは良くわかりません。
4.追加
(1) AIの最先端モデルのCode LlamaのGPUを使った動作再現試験
前回、AIがCodeを作成するCode Llamaが個人環境で動作するか確認をしました。本当に動作したかを確認するために、別PCで再現試験を実施しました。その内容を記述します。
(a) 再現環境
利用したPCは下記スペックです
CPU: i3-7100
GPU: nvidia 1050Ti
Memory: 16GB
Disk: 500GB(Hard disk)
OS: Ubuntu-20.04.6(desktop)
(b) nvidia + docker + cuda + pytorchの環境構築
前回と同じです
nvidia-driver-535 を利用
dockerはubuntu-20.04.6の標準
docker hubのnvidia/cuda:11.7.1-runtime-ubuntu20.04を利用
pytorchは、Stable(2.0.1)利用
(c) Google Colabで実行された内容の再現
実行はjupyter-notebookで実行しました。
参考資料に従いGoogle Colabで実行された内容をローカル環境で再現。
再現できました。
CodeLlama-7b-hf を利用しているので70億パラメータモデルです。
しかし、モデルは約10GBで巨大です。
Ubuntu-20.04.6の導入完了から時間を測定しました。
(b)(c)の実行に約1.5時間でした。
(2) 大規模言語モデルGPT4ALLの記事を見つけて試しました
chatGPTが話題となる中で、GPT-3.5-TurboとMetaの大規模言語モデル「LLaMA」で学習したデータを用いた、ノートPCでも実行可能なチャットボット「GPT4ALL」をNomic AIが発表の記事を見つけました。早速、動作させてみたので、その内容を記述します。
環境はIntel Core i3-7100 Memory 16GBを利用しました。
参考資料のgithubのREADME.mdを参照して、導入できます。
(a) gpt4all-lora-quantized.binをDownload。約4.2GBの巨大なファイルです。
(b) git cloneでモジュールをCopyします。gitallディレクトリができます。
(c) git4all/chatにDownloadしたgpt4all-lora-quantized.binを移動します。
これで準備できました。
動作検証
chatディレクトリに入って、./gpt4all-lora-quantized-linux-x86を実行します。
~/gpt4all/chat$ ./gpt4all-lora-quantized-linux-x86
main: seed = 1680417994
llama_model_load: loading model from 'gpt4all-lora-quantized.bin' - please wait ...
llama_model_load: ggml ctx size = 6065.35 MB
llama_model_load: memory_size = 2048.00 MB, n_mem = 65536
llama_model_load: loading model part 1/1 from 'gpt4all-lora-quantized.bin'
llama_model_load: .................................... done
llama_model_load: model size = 4017.27 MB / num tensors = 291
system_info: n_threads = 4 / 4 | AVX = 1 | AVX2 = 1 | AVX512 = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | VSX = 0 |
main: interactive mode on.
sampling parameters: temp = 0.100000, top_k = 40, top_p = 0.950000, repeat_last_n = 64, repeat_penalty = 1.300000
== Running in chat mode. ==
- Press Ctrl+C to interject at any time.
- Press Return to return control to LLaMA.
- If you want to submit another line, end your input in '\'.
> do you speak japanese
I do not currently have any knowledge of Japanese language, but I am open to learning it in the future if given proper guidance and resources
>
現状は英語以外ではチャットはできないようです。
(3) Code Llamaはpytorch環境でGPU必須でした
知人からCode LlamaはGPUがない環境で動作するのですか? と問合せを受けました。そこで、GPUを利用しないpytorch環境を構築して試験しました。結果は、CUDAがないと動作しないので、nvidaのGPUは必須のようです。この内容を記述します。
(a) 再現環境
利用したPCは下記スペックです
CPU: i3-7100
GPU: nvidia 1050Ti
Memory: 16GB
Disk: 500GB(Hard disk)
OS: Ubuntu-20.04.6(desktop)
(b) docker + pytorchの環境構築
ubuntu-20.04.6環境をBackupからリストアしてクリーン環境にして実行。
nvidiaのドライバーは、nouveauです。
docker hubのcontinuumio/miniconda3:latestを利用
pytorchは、Stable(2.0.1)利用
(c) Google Colabで実行された内容の再現
実行はjupyter-notebookで実行しました。
パッケージのインストールは、実行できました。
モデルとトークナイザーの準備も実行できました。
モデルとトークナイザーの準備の下記部分でエラーとなりました。
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
エラー内容は下記メッセージです。
AssertionError: Torch not compiled with CUDA enabled
(4) Ollamaを利用してLlama-3-ELYZA-JP-8Bを動かしました
Ollamaを利用してLlama-3-ELYZA-JP-8Bを簡単に動かすことができる記事を見つけて試してみました。その内容を記述します。何と言っても日本製品です。安心して利用できることが一番です。
(a) 利用した環境
CPU: Ryzen 3 3200G
Memory: 16GB
SSD: 250GB
OS: Ubuntu-22.04.5
(b) 必要なストレージ容量
install作業でOllamaとLlama-3-ELYZA-JP-8Bで約7GB程度です。
コンパクトにできていて、レスポンスもよく、良い感じがします。
参考資料によると、GPT-3.5 Turboより上で、GPT-4より下という感触でしょうか?
(5) Docker環境でOllamaを利用してLlama-3-ELYZA-JP-8Bを動かしました
前回、Ollamaを利用して、Llama-3-ELYZA-JP-8Bを動かしました。今回はより便利なDocker環境で動かすことにチャレンジしました。その内容を記述します。
参考資料を参照して、Ollamaのコンテナをベースに構築をします
利用した環境は前回と同じHWですが、Ubuntu-20.04.6を利用しました
elyzaディレクトリを作成して、そこで作業をします
mkdir elyza
cd elyza
containerの/optディレクトリで作業をすることにします
(a) Modelfileの作成
下記設定をModelfileという名前で作成します
FROM ./Llama-3-ELYZA-JP-8B-q4_k_m.gguf
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>"""
PARAMETER stop "<|start_header_id|>"
PARAMETER stop "<|end_header_id|>"
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|reserved_special_token"
(b) Dockerfileの作成
下記設定をDockerfileで作成します
from ollama/ollama:latest
#
RUN apt update
RUN apt -y install curl
#
WORKDIR /opt
COPY Modelfile /opt/Modelfile
#
RUN curl -L -o Llama-3-ELYZA-JP-8B-q4_k_m.gguf "https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF/resolve/main/Llama-3-ELYZA-JP-8B-q4_k_m.gguf?download=true"
(c) docker-compose.ymlの作成
下記設定をdocker-compose.ymlで作成します
version: '3.5'
services:
ollama:
container_name: ollama
build:
context: .
dockerfile: Dockerfile
(d) container起動
$ docker-compose up -d
(e) containerへlogin後、elyza起動
$ docker exec --user root -it ollama /bin/bash
containerにloginすると/optディレクトリに入るので、下記コマンドを実行します
$ ollama create elyza -f Modelfile
$ ollama run elyza
注意事項
最初に古いamdのCPUのPCで実行したのですが、Illegal instructionで止まります。
参考資料にAVX2サポートが必要と記載されていました。
参考
[外部サイト参照]・Llama 2 learns to code
・Google Colab で Code Llama を試す
・OllamaでLlama-3-ELYZA-JP-8Bを使う方法!
・「よーしパパ、Ollama で Llama-3-ELYZA-JP-8B 動かしちゃうぞー」
・Llama 3 の日本語継続事前学習モデル「Llama-3-ELYZA-JP-8B」を試してみる
・OllamaでLlama-3-ELYZA-JP-8Bを使う方法!
コメント
コメントを投稿