見出し画像

Jan Desktopを用いて、WindowsでローカルLLMを動かしてみた

1.Janとは?

以下文章は、https://jan.ai/guides/の要約です

Jan Desktopは、独自のコンピュータ上で動作するChatGPTの代替品として開発されたデスクトップクライアントです。
このプラットフォームは、開発者が独自のAIモデルや拡張機能を作成し、カスタマイズするための強力な環境を提供します。

1A.主要な機能

  1. 多様な互換性: Janは、GGUF(via llama.cpp)、TensorRT(via TensorRT-LLM)、およびリモートAPIを含むオープンソースモデルとの互換性を備えています。

  2. OSの多様性: Windows、Mac、Linuxなど、ほとんどのオペレーティングシステムに対応し、llama.cppを介したGPUアクセラレーションを利用できます。

  3. ローカルAPIサーバーモード: セキュリティとプライバシーを重視した設計で、APIサーバーをローカルに設置できます。

  4. 拡張性: ローカルファースト、AIネイティブ、クロスプラットフォームの拡張フレームワークを通じて、機能からUI、ブランディングまで全てを拡張・カスタマイズできます。

  5. オープンファイルフォーマット: Janはデータをローカルファイルシステムに保存し、データの管理権は完全にユーザーにあります。

1B.Janの特徴

  • 独立性: Janは100%ユーザー自身のマシン上で動作し、プライバシーを重視し、予測可能でオフラインでの動作を保証します。ユーザーの会話は完全にプライベートで、外部に漏れることはありません。

  • 拡張性: Janは、ローカルファースト、AIネイティブ、クロスプラットフォームの拡張フレームワークを提供し、開発者が機能からUI、ブランディングまで全てを拡張・カスタマイズできるようにします。

  • オープンソース: Janとその軽量推論エンジン「Nitro」は、オープンソースライセンスAGPLv3の下でライセンスされています。これにより、コミュニティは自由にコードに貢献し、改善を加えることができます。

1C.注意点

  • JanがサポートしているLLMモデルは、GGUFとなります。そのため、GGUF版が提供されていないモデルについては変換が必要となります。

  • 一部モデルについては、LLama系以外のモデルについて、GPU動作が出来ず、CPU動作になるため一部モデルで推論速度が出ません。

2.インストール

上記Gitにアクセスして、Downloadより任意OSの実行ファイルをダウンロードします。(Stable (Recommended)版をインストール推奨)

ダウンロードを行った実行ファイルを実行後、Janが起動します。

3.ローカルモデルを試す - [llama2 Chat 7B Q4]

今回は、「Llama 2 Chat 7B Q4」モデルを動作させてみました。

左メニューよりHubを選択し、「llama」で検索を行います。

目的の、「Llama 2 Chat 7B Q4」をダウンロードします。

ダウンロードが完了したら、左メニューより「Thred」を選択し、ModelをLlama 2 Chat 7B Q4になっていることを確認して、スレッドにチャットを入力します。

以上です。

4.ローカルモデルを試す - [calm2-7b-chat-dpo-experimental-q4]

Janは、Hubにて配布されているモデル数が少ないため、より多くのモデルを試すにはマニュアルでモデルをインポートする必要があります。

今回は、サイバーエージェントさんのcalm2-7b-chat-dpo-experimentalを入れてみます。

Janは、ggufモデルに対応していますが、サイバーエージェント公式では、残念ながらggufを配布していません。

そのため、mmngaさんが配布している4bで量子化済みのモデルを利用します。

上記リンクより、ggufをダウンロードし、以下のフォルダーを開きます。

C:\Users\your_user_name\jan\models

新規でフォルダーを作成します。例:calm2-7b-chat-dpo-experimental-q4
作成したフォルダーにダウンロードしたguffをコピペ

その後、Janを起動し、Modelで該当モデルを選択します。

すると作成したフォルダーにjsonファイルが自動生成されるため、そのJsonファイルを以下のように編集します。

変更点は、prompt_templateとstopで画像のように編集します。

{
  "object": "model",
  "version": 1,
  "format": "gguf",
  "source_url": "N/A",
  "id": "calm2-7b-chat-dpo-experimental-q4",
  "name": "calm2-7b-chat-dpo-experimental-q4",
  "created": 1706342821223,
  "description": "calm2-7b-chat-dpo-experimental-q4 - user self import model",
  "settings": {
    "ctx_len": 4096,
    "ngl": 0,
    "embedding": false,
    "prompt_template": "{system_message}\n### 指示: {prompt}\n### 解答:"
  },
  "parameters": {
    "temperature": 0.7,
    "top_p": 0.95,
    "stream": true,
    "max_tokens": 2048,
    "stop": [
      "<|endoftext|>"
    ],
    "frequency_penalty": 0,
    "presence_penalty": 0
  },
  "metadata": {
    "author": "User",
    "tags": ["7B"],
    "size": 0
  },
  "engine": "nitro"
}

Janに戻り新規スレッドを立ち上げ、動作させます。

5.まとめ

Jan Desktopは、オープンソースAIモデルとの高度な互換性、OSの多様性、セキュアなローカルAPIサーバー機能、拡張可能なフレームワーク、ユーザーのデータを守るオープンファイルフォーマットを特徴とする、独自のコンピュータ上で動作するChatGPTの代替品となるえるアプリケーションです。APIも提供されているため、独自コードとの連携も可能だと思われます。(今後掘る予定)

これにより、GPTなどのオンラインモデルのみに頼ることなく、モデルや拡張機能を作成し、カスタマイズするための強力な環境を手に入れることができると考えららえます。


この記事が気に入ったらサポートをしてみませんか?