1. safetensor形式からgguf形式に変換する。

    参考: https://note.com/npaka/n/n3e99d2a45a4b
    各クローン先は任意の場所でOK。

    1. Hugging Faceからモデルをクローンする。

       $ cd
       $ git clone https://huggingface.co/llm-jp/llm-jp-3-13b-instruct
      

      モデルが大きいので、待ってる間に以下を進める。

    2. llama.cppのセットアップ

      1. レポジトリをクローンする。

         $ cd
         $ git clone https://github.com/ggerganov/llama.cpp.git
         $ cd llama.cpp
        
      2. Python 3.10のセットアップ

         $ mise use [email protected]
        
      3. venvの構築

         $ python3 -m venv .venv
         $ source .venv/bin/activate
        
      4. 必要なパッケージのインストール

         $ pip install -r requirements.txt
        
    3. tokenizer.modelをコピーする。

       $ cd
       $ git clone https://github.com/llm-jp/llm-jp-tokenizer.git
       $ cp ~/llm-jp-tokenizer/models/ver3.0/llm-jp-tokenizer-100k.ver3.0b1.model ~/llm-jp-3-13b-instruct/tokenizer.model
      
      
    4. モデルをsafetensor形式からgguf形式に変換する。

       $ cd $HOME/llama.cpp
       $ python3 convert_hf_to_gguf.py ~/llm-jp-3-13b-instruct/ --outfile llm-jp-3-172b-instruct3.gguf
      
  2. Modelfileを以下の内容で作成する。

    https://github.com/ollama/ollama/blob/main/docs/modelfile.mdhttps://huggingface.co/llm-jp/llm-jp-3-13b-instruct/blob/main/tokenizer_config.jsonを元にChatGPT o1に作らせた。

     FROM ./llm-jp-3-13b-instruct.gguf
    
     # 推論時のパラメータを調整
     PARAMETER num_ctx 4096
     PARAMETER temperature 1
     PARAMETER top_k 40
     PARAMETER top_p 0.9
    
     # システムメッセージを設定(任意の役割やトーンを指定可能)
     SYSTEM """あなたは日本語で質問に答えるアシスタントです。文体は丁寧かつ簡潔にしてください。"""
    
     # テンプレート例
     # - .System   : 上記の SYSTEM メッセージが入る
     # - .Prompt   : ユーザが入力したプロンプトが入る
     # - .Response : モデルが生成する出力が入る
     TEMPLATE """{{ if .System }}以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。
    
     {{ .System }}
     {{ end }}
    
     {{ if .Prompt }}### 指示:
     {{ .Prompt }}
     {{ end }}
    
     ### 応答:
     {{ .Response }}"""
    
    
     # 追加で会話の履歴を与えたい場合は MESSAGE を使う
     # MESSAGE user "こんにちは、調子はいかがですか?"
     # MESSAGE assistant "はい、快適に動作しています。何をお手伝いできますか?"
    
    
  3. ollamaでモデルを構築する

     $ ollama create llm-jp-3-13b-instruct -f ./Modelfile
    
  4. ollamaで実行する。

     $ ollama run llm-jp-3-13b-instruct