M1macBookAir 16GBで
Ollama を使って日本語に特化した大規模言語モデル Llama-3-ELYZA-JP-8B を動かす
実行環境
M1 MacbookAir 16GB
「よーしパパ、Ollama で Llama-3-ELYZA-JP-8B 動かしちゃうぞー」
を参考に実践
ただし
* Model: MacBook Pro 14-inch, Nov 2023
* Chip: Apple M3
* Memory: 24 GB
* OS: macOS 14.4.1
で動作確認なので
私の環境が動くかは微妙なところ
モデルファイルを
ダウンロードしようとしたが
https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF/blob/main/Llama-3-ELYZA-JP-8B-q4_k_m.gguf
で
This file is stored with Git LFS . It is too big to display, but you can still download it.
となっている
どうすればダウンロードできるか?
日本語で解説
とchatgpt40で調べた
1 | brew install git-lfs |
とするが
1 2 3 4 5 6 7 8 9 | ==> Downloading https: //formulae .brew.sh /api/formula .jws.json ######################################################################### 100.0% ==> Downloading https: //formulae .brew.sh /api/cask .jws.json ######################################################################### 100.0% git-lfs 3.0.2 is already installed but outdated (so it will be upgraded). Error: Cannot install under Rosetta 2 in ARM default prefix ( /opt/homebrew )! To rerun under ARM use: arch -arm64 brew install ... To install under x86_64, install Homebrew into /usr/local . |
となる
1 | arch -arm64 brew install git-lfs |
で再度実行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | git-lfs 3.0.2 is already installed but outdated (so it will be upgraded). ==> Downloading https: //ghcr .io /v2/homebrew/core/git-lfs/manifests/3 .5.1 ######################################################################### 100.0% ==> Fetching git-lfs ==> Downloading https: //ghcr .io /v2/homebrew/core/git-lfs/blobs/sha256 :6079593e9b ######################################################################### 100.0% ==> Upgrading git-lfs 3.0.2 -> 3.5.1 ==> Pouring git-lfs--3.5.1.arm64_sonoma.bottle. tar .gz ==> Caveats Update your git config to finish installation: # Update global git config $ git lfs install # Update system git config $ git lfs install --system ==> Summary <img draggable= "false" class= "emoji" alt= " src= "https://s.w.org/images/core/emoji/11/svg/1f37a.svg" > /opt/homebrew/Cellar/git-lfs/3 .5.1: 79 files, 12.6MB ==> Running `brew cleanup git-lfs`... Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW_NO_ENV_HINTS (see ` man brew`). Removing: /opt/homebrew/Cellar/git-lfs/3 .0.2... (65 files, 11.3MB) |
グローバルGit設定を更新するので
1 2 3 | git lfs install git clone https: //huggingface .co /elyza/Llama-3-ELYZA-JP-8B-GGUF .git |
でダウンロード
Ollama では標準サポートされていないため、
モデルに関連する必要な情報を記載したファイルを作成し、そのファイルからモデルを作る
https://github.com/ollama/ollama/blob/main/docs/modelfile.md
の例では
1 2 3 4 5 6 7 8 | FROM llama3 # sets the temperature to 1 [higher is more creative, lower is more coherent] PARAMETER temperature 1 # sets the context window size to 4096, this controls how many tokens the LLM can use as context to generate the next token PARAMETER num_ctx 4096 # sets a custom system message to specify the behavior of the chat assistant SYSTEM You are Mario from super mario bros, acting as an assistant. |
Chatgpt によれば
拡張子は不要で
Modelfileの内容はYAML形式で記述
Modelfileの主要なフィールド
* name: モデルの名前
* version: モデルのバージョン
* description: モデルの簡単な説明
* license: モデルのライセンス情報(オープンソースかどうか)
* architecture: モデルのアーキテクチャ(例: llama, gpt)
* weights: モデルの重みファイルのパスとフォーマット
* tokenizer: トークナイザーの種類と必要なファイルのパス
* config: モデルの設定(バッチサイズや最大トークン数など)
* assets: モデルに関連するスクリプトや追加のリソース(オプション)
って解説が出たけど
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | name: Llama-3-ELYZA-JP-8B version: 1.0.0 description: A Japanese language model based on Llama architecture. license: open architecture: llama weights: - path: . /path/to/model/weights .bin format : pytorch tokenizer: type : bpe vocab_file: . /path/to/vocab .json merges_file: . /path/to/merges .txt config: max_tokens: 1024 batch_size: 8 # Optional: custom Python scripts or other assets assets: - path: . /path/to/custom/script .py type : script |
というように全然違う記述になっている
とりあえず
https://qiita.com/s3kzk/items/3cebb8d306fb46cabe9f
を参考に
Modelfile を作成する
1 | vim Modelfile |
でファイルを作成
中身を
1 2 3 4 5 6 7 8 9 10 11 12 | 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" |
として保存
1 | ollama create elyza:jp8b -f Modelfile |
を実行しようとしたけど
ディスクがいっぱいでエラー
1 | Error: write /Users/snowpool/ .ollama /models/blobs/sha256-722055746 : no space left on device |
外付けSSDを使いデータを移動しておく
1 | ls /Volumes |
が外付けSSDのマウントされるので
1 2 3 | df -h /Volumes/KINGSTON Filesystem Size Used Avail Capacity iused ifree %iused Mounted on /dev/disk9s1 954Gi 752Gi 202Gi 79% 1 0 100% /Volumes/KINGSTON |
で内容量を確認
不要と思われるファイルを外付けSSDに移動
1 | ollama create elyza:jp8b -f Modelfile |
を実行し
1 2 3 4 5 6 7 | transferring model data 100% using existing layer sha256:91553c45080b11d95be21bb67961c9a5d2ed7556275423efaaad6df54ba9beae using existing layer sha256:8ab4849b038cf0abc5b1c9b8ee1443dca6b93a045c2272180d985126eb40bf6f creating new layer sha256:c0aac7c7f00d8a81a8ef397cd78664957fbe0e09f87b08bc7afa8d627a8da87f creating new layer sha256:bc526ae2132e2fc5e7ab4eef535720ce895c7a47429782231a33f62b0fa4401f writing manifest success |
となったので
1 | ollama run elyza:jp8b |
で実行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | >>> 今日の静岡の最高気温は? 残念ながら、I 'm a large language model, I don' t have有するデータベースにリア ルタイムな天候情報は持っていません。ですから、今日の静岡の最高気温についてお 答えすることができません。 最新の天候情報を知りたい場合は、以下の方法で入手してください。 1. 気象庁のウェブサイト: 気象庁のホームページには、全国各地の天気予報や観測 結果が掲載されています。 2. 静岡県の公式ウェブサイト: 静岡県の公式ウェブサイトにも、静岡県内の天気予 報や観測結果が掲載されている場合があります。 3. 天気アプリやニュースサイト: 多くの天気アプリやニュースサイトでは、最新の 天候情報を提供しています。 >>> 不労所得を得るにはどうすればいい? 不労所得とは、労働をしなくても入ってくる収入のことです。代表的な不労所得の例 は以下の通りです。 1. 配当金や株主優待: 株式投資で得られる配当金や株主優待など。 2. Rental Income(不動産所得): 不動産投資をして家賃収入や賃料収入を得る。 3. Dividend-paying Stocks(分配型債券): 高配当の債券やハイイールド債で、定期 的な利息が受け取れる。 不労所得を得るためには、以下の方法があります。 1. 資産運用: - 株式投資や債券投資、REIT(不動産投資信託)、FXなど。 - 信託銀行や証券会社に資金を預け、運用してもらう。 2. 副業やスキル活用: - スキルや知識を生かして、オンラインで教える講師や、作家・作曲家としての 活動など。 3. 不動産投資: - アパートやマンションの所有権を取得し、家賃収入を得る。 4. 預貯金や定期預金: - 高利回りの銀行口座に預け入れる。 不労所得は、通常、以下のような特徴があります。 1. 複雑な計算や帳簿が必要ない。 2. 労働の時間と直接関係しない収入。 3. 通常、資産形成のために運用することになる。 不労所得を始めるためには、以下の点に注意してください。 1. 資金やリスク管理を厳しく行う必要がある。 2. 運用成績や利回りが期待通りにいかない場合もある。 3. 税制や法律の改正に適切に対応することが大切です。 >>> /bye |
と実行したが
思ったよりも軽快に動作する
なおリアルタイムの情報などを得ることはそのままではできなかった
次は
Enchantedを使い webUIを試す