見出し画像

LLM-jp-3 を llama.cpp を使って iPhone・Android で動かす

「LLM-jp-3」を「llama.cpp」を使って iPhone・Android で動かす手順をまとめました。


1. LLM-jp-3

LLM-jp-3」は、国立情報学研究所大規模言語モデル研究開発センターによって開発されたLLMです。「LLM-jp-3 172B」の事前学習に使用しているコーパスで学習したモデルになります。各モデルは日本語・英語・ソースコードを重点的に学習しています。「Apache License 2.0」で提供されています。

・llm-jp/llm-jp-3-1.8b
・llm-jp/llm-jp-3-1.8b-instruct
・llm-jp/llm-jp-3-3.7b
・llm-jp/llm-jp-3-3.7b-instruct
・llm-jp/llm-jp-3-13b
・llm-jp/llm-jp-3-13b-instruct

2. iPhone での llama.cpp の実行

iPhone での「llama.cpp」の実行手順は、次のとおりです。

(1) 「llama.cpp」のリポジトリをクローン。

git clone https://github.com/ggerganov/llama.cpp

(2) 「llama.cpp/examples/llama.swiftui」を「Xcode」で開く。
iPhoneで「llama.cpp」を実行する公式サンプルコードになります。

(3) HuggingFaceから「alfredplpl/llm-jp-3-1.8b-instruct-gguf」の「llm-jp-3-1.8b-instruct-F16.gguf」をダウンロード。

(4) Xcodeのプロジェクトの「models」に「llm-jp-3-1.8b-instruct-F16.gguf」を配置。

(5) 「llama.swiftui/Models/LlamaState.swift」の20行目を編集。
モデル「LLM-jp-3 1.8B」を指定しています。

    private var defaultModelUrl: URL? {
        Bundle.main.url(forResource: "llm-jp-3-1.8b-instruct-F16", withExtension: "gguf", subdirectory: "models")
    }

(6) 「llama.cpp.swift/LibLlama.swift」の119行目を編集。
完了フラグをおろし(is_done = false)、チャットテンプレートを追加しています。

        is_done = false
        tokens_list = tokenize(text: "<s>\n\n### 指示:\n\(text)\n\n### 応答:\n", add_bos: true)
        temporary_invalid_cchars = []

(7) iPhoneを「開発者モード」にして、USBでPCと接続。

(8) 「Signing & Capabilities」で署名。

(9) 「Xcode」の実行ボタンを押す。
アプリが起動します。

(10) メッセージボックスに「質問」を入力して「Send」ボタンを押す。

※ 動画では「チャットテンプレート」ごと入力してますが、コードに組み込んだので、「質問」のみ入力してください。

3. Android での llama.cpp の実行

Android での「llama.cpp」の実行手順は、次のとおりです。

(1) 「llama.cpp」のリポジトリをクローン。

git clone https://github.com/ggerganov/llama.cpp

(2) 「llama.cpp/examples/llama.android」を「Android Studio」で開く。
Androidで「llama.cpp」を実行する公式サンプルコードになります。

(3) 「app/kotlin+java/com/example.llama/MainActivity.kt」の73行目を編集。
モデル「LLM-jp-3 1.8B」を指定しています。

        val models = listOf(
            Downloadable(
                "LLM-jp-3 1.8B (F16, 3.7GiB)",
                Uri.parse("https://huggingface.co/alfredplpl/llm-jp-3-1.8b-instruct-gguf/resolve/main/llm-jp-3-1.8b-instruct-F16.gguf?download=true"),
                File(extFilesDir, "llm-jp-3-1.8b-instruct-F16.gguf"),
            ),

(4) 「llama/kotlin+java/android.llama.cpp/LlamaAndroid.kt」の39行目を編集。
トークン数を512に増やしています。

    private val nlen: Int = 512

(5) 「llama/kotlin+java/android.llama.cpp/LlamaAndroid.kt」の121行目を編集。
チャットテンプレートを追加しています。

                val ncur = IntVar(completion_init(state.context, state.batch, "<s>\n\n### 指示:\n" + message + "\n\n### 応答:\n", nlen))

(6) Androidを「開発者モード」にして、USBでPCと接続。

(7) 「Android Studio」の実行ボタンを押す。
アプリが起動します。

(8) 「Download LLM-jp-3 1.8B」ボタンを押す。
Downloadingが100%になるまで待ちます。

(9) 「Load LLM-jp-3 1.8B」ボタンを押す。

(10) メッセージボックスに「質問」を入力して「Send」ボタンを押す。

※ 動画では「チャットテンプレート」ごと入力してますが、コードに組み込んだので、「質問」のみ入力してください。

関連



いいなと思ったら応援しよう!