Please tell me how did you convert this FAST model into gguf file.

#1
by wattai - opened

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,

Owner

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 ファイルでは同じ方法で問題なくサーバを立ち上げることができるのです。

Owner

この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 を追記する箇所などがありましたが、無事量子化に成功し動作も問題なく行えることを確認しました。

大変助かりました。

Sign up or log in to comment