1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LLM・LLM活用Advent Calendar 2024

Day 4

CLIでLLMが使える"simonw/llm"を使ってGemma 2 2Bを動かしてみた

Posted at

この記事は「LLM・LLM活用 Advent Calendar 2024」の3日目の記事になります!

概要

CLIでLLMを利用可能なsimonw/llmのプラグインである
simonw/llm-ggufを導入し, コマンドラインでgoogle/gemma-2-2b-jpn-itを動作させる.

simonw/llm

  • LLMと連携するためのCLI UtilityおよびPython Library
  • API呼び出しだけでなく, ローカルLLMにも対応
  • 埋め込みを生成し, その結果をSQLiteに保存することも可能

プラグイン一覧(一部)

プラグイン名 説明
llm-gguf llama.cpp を使用し, GGUF 形式で公開されたモデルを実行
llm-gpt4all GPT4Allプロジェクトによってリリースされた, ローカルに実行可能なモデルをサポート. Vicuna、Orca、Falcon、MPT 等のバージョンが含まれる. 使用可能なモデルのリスト
llm-ollama Ollama を使用しローカルで実行可能なモデルをサポート
llm-gemini GoogleのGeminiモデルをサポート
llm-claude AnthropicのClaude 2.1およびClaude Instant 2.1をサポート
llm-claude-3 AnthropicのClaude 3モデルファミリーをサポート

simonw/llm-ggufの使い方

実行環境

  • Windows11
  • Ubuntu 20.04 LTS(WSL)
  • CPU AMD Ryzen 7 5700X

導入

  • Python 3.12が使える環境でsimonw/llm をインストール
    pip install llm
    
  • プラグインsimonw/llm-ggufのインストール
    llm install llm-gguf
    

GGUFモデル登録

  • alfredplpl/gemma-2-2b-jpn-it-ggufからGGUFモデルをダウンロード
  • 以下のコマンドで使用したいモデルを登録
    llm gguf register-model gemma2-2b-iq4xs ./gemma-2-2b-jpn-it-IQ4_XS.gguf --alias gemma2 
    
  • llm gguf modelsで現在登録されているモデルを確認可能
    > llm gguf models
    {
      "gemma2-2b-iq4xs": {
        "path": "path/to/gemma-2-2b-jpn-it-IQ4_XS.gguf",
        "aliases": [
          "gemma2"
        ],
        "size": "1.46 GB"
      }
    }
    
  • 設定ファイルが~/.config/io.datasette.llm/ggufにあるので直接編集することも可能

コマンドラインからの呼び出し

  • llm -m gemma2 "prompt" で呼び出し
    > llm -m gemma2 "日本で一番高い山は?"
    日本で一番高い山は富士山です。
    

使用例

他のコマンドの実行結果(標準出力)を受け取る

  • command | llm -m gemma2 -s "prompt" でcommandの結果を受けてpromptの質問に答える
    > lscpu
    Architecture:            x86_64
      CPU op-mode(s):        32-bit, 64-bit
      Address sizes:         48 bits physical, 48 bits virtual
      Byte Order:            Little Endian
    CPU(s):                  16
      On-line CPU(s) list:   0-15
    Vendor ID:               AuthenticAMD
      Model name:            AMD Ryzen 7 5700X 8-Core Processor
    ... 省略
    
    > lscpu  | llm -m gguf/gemma2-2b-xq4xs  -s "このPCのCPUのモデルは?"
    CPUのモデルは、AMD Ryzen 7 5700X です。 
    

エラー内容をllmに渡す

  • 以下のようなコンパイルエラーになるCプログラムに対して質問したい場合
    compile_error.c
    #include <stdio.h>
    
    int main(void){
        int a = 1;
        printf("%d\n", a) // ; がないためコンパイルエラー
        return 0;
    }
    
    > gcc error_code.c 2>&1  | llm -m gemma2  -s "エラーの理由と解決方法を教えて"
     エラーメッセージ「expected ‘;’ before ‘return’」は、C言語のプログラムで、`return`コマンドの前にセミコロン(`;`)が必要であることを示しています。
    
    このエラーが発生する原因は、`return 0;`コマンドの後にセミコロンがないためです。
    
    **解決方法**
    
    1. **セミコロンを追加する:**  `return 0;`コマンドの前にセミコロンを追加します。
    
       ```c
       printf(&#34;%d\n&#34;, a);
       return 0; 
       ```
       
    
    • 2>&1は標準エラー出力を標準出力にリダイレクトするコマンド
      • コンパイルエラーは標準エラー出力であるため gcc error_code.c | ... では 次のコマンドに渡せない

参考記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?