Please tell me how did you convert this FAST model into gguf file.
I am trying to convert my fine-tuned model based on ELYZA-japanese-Llama-2-7b-fast-instruct for llama.cpp, but I got an error same as this Issue.
Then I just found your repos, so I am very curious about how did you convert this FAST model into gguf file.
Sincerely,
This model's tokenizer is created by extending llama-tokenizer.
At that time, I used llama's own script to merge tokenizer.model and elyza's tokenizer.json and convert it to gguf.
In the current llama.cpp, in convert.py,convert.py <modelpath> --outtype f16 --vocab-type hfft --pad-vocab
I think you can convert it with
このモデルのtokenizerはllama-tokenizerを拡張して作られています。
当時は、llamaからtokenizer.modelを持ってきて、追加のvocabをスクリプトでtokenizer.jsonからマージして作成しています。
現在はllama.cppのconvert.pyの機能としてHuggingFaceFastTokenizerの変換機能が追加されているので、convert.py <modelpath> --outtype f16 --vocab-type hfft --pad-vocab
で変換できると思います。
エラーが出たらまた教えてください
返信有り難うございます。
実は、コンバート自体は成功するのです。
ただその後サーバ( llama.cpp の docker イメージで立ち上げています)を立ち上げる段階で上記の issue と同じエラーが送出されるといった状況なのです。
しかし momonga さんの作られた gguf ファイルでは同じ方法で問題なくサーバを立ち上げることができるのです。
このggufは独自のスクリプトでカスタマイズしてます。
現在はllama.cppでも実行可能なggufが作れると思ってますが、
--vocab-type hfftで変換してもそのエラーが出ますか?
--vocab-type hfftで変換してもそのエラーが出ますか?
おっしゃるとおりです。
明示的にそのオプションを指定して変換したものでも同じエラーが送出されるのです。
ちょっとスクリプトが古くて申し訳ないですが、一応現状のllama.cppでも動作確認できましたので共有します。
新しくスクリプト更新したらまた記述しますね
# llama.cppのclone
!git clone https://github.com/ggerganov/llama.cpp.git
!pip uninstall gguf -y
%cd /content/llama.cpp/gguf-py
!pip install --editable .
%cd /content/llama.cpp
# モデルのダウンロード
%cd /content/llama.cpp
!git lfs install
!git clone https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b-fast-instruct
# tokenizer.modelのダウンロード
!wget https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b-instruct/resolve/main/tokenizer.model -O '/content/llama.cpp/tokenizer.model'
# 変換コードのダウンロード
!wget https://raw.githubusercontent.com/mmnga/llama.cpp/mmnga-dev-merge/convert-llama-hf-to-gguf_for_ex_vocab.py -O '/content/llama.cpp/convert-exvocab.py'
# 変換
!python3 "/content/llama.cpp/convert-exvocab.py" './ELYZA-japanese-Llama-2-7b-fast-instruct' 1
# ビルド
!make -j
# 量子化
%cd /content/llama.cpp
!./quantize './ELYZA-japanese-Llama-2-7b-fast-instruct/ggml-model-f16.gguf' './ELYZA-japanese-Llama-2-7b-fast-instruct-q4_0.gguf' Q4_0
# 実行
!./main -m './ELYZA-japanese-Llama-2-7b-fast-instruct-q4_0.gguf' -p "Translate this from Japanese to English:\nJapanese: 今日の夕食はピザです。\nEnglish:" -n 128
colabでのコードになりますが、実際の変換は
tokenizer.modelのダウンロード
からで大丈夫です。
適当に編集してご使用ください
ありがとうございます!
しかし私の方で colab で実行してみたところ、若干メモリ不足のために del model_part
を追記する箇所などがありましたが、無事量子化に成功し動作も問題なく行えることを確認しました。
大変助かりました。