end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

LOCAL LLM via emacs29 + ellama via ollama on win11 + intel core i7 + mem:64G + rtx4090

LOCAL LLM via ollama on win11 + intel core i7 + mem:64G - end0tknr's kipple - web写経開発

先程の上記entryの続きです。

CPUのみでの ローカルLLM利用は難しいことが分かりましたので、 geforce rtx4090 のGPUを接続し emacs + ellama 経由でも試してみました。

参考url

-最強ローカルLLM実行環境としてのEmacs | 日々、とんは語る。 -GitHub - s-kostyaev/ellama: Ellama is a tool for interacting with large language models from Emacs.

ellamaの依存ライブラリ (ollama、emacs29)

ellamaはollamaを必要としますが、 先程のentryの通り既にollamaはインストール済です。

emacsは、emacs28 for winを使用していましたが、 「M-x ellama-summarize」等のellama実行時、 次のようなエラーとなりましたので、emacs29を使用しています。

Symbol's function definition is void: setopt

installation

ellamaのdocumentにも記載されている通り、 emacsで、package-install を実行するのみです

M-x package-install ⏎
ellama ⏎

model download

ollamaでダウンロードした LOCAL LLM を利用できます。 先程のentryの通り、既にダウンロード済ですので、省略します。

configuration ( .emacs.d/init.el )

参考urlにあった内容を init.el に追記しています

(with-eval-after-load #'llm
  (require #'llm-ollama)
  ;; ellama-translateで翻訳する言語
  (setq ellama-language "Japanese")
  ;; ellama-ask-selection などで生成されるファイルのネーミングルール
  (setq ellama-naming-scheme #'ellama-generate-name-by-llm)
  ;; デフォルトのプロバイダー
  (setq ellama-provider (make-llm-ollama
                           :chat-model "codestral:22b-v0.1-q4_K_S"
                           :embedding-model "codestral:22b-v0.1-q4_K_S"))
  ;; 翻訳で利用するプロバイダー
  (setq ellama-translation-provider (make-llm-ollama
                                       :chat-model "aya:35b-23-q4_K_S"
                                       :embedding-model "aya:35b-23-q4_K_S"))
  ;; ellamaで使えるプロバイダー。ellama-provider-select で選択できる
  (setq ellama-providers
          #'(("codestral" . (make-llm-ollama
                            :chat-model "codestral:22b-v0.1-q4_K_S"
                            :embedding-model "codestral:22b-v0.1-q4_K_S"))
            ("gemma2" . (make-llm-ollama
                            :chat-model "gemma2:27b-instruct-q4_K_S"
                            :embedding-model "gemma2:27b-instruct-q4_K_S"))
            ("command-r" . (make-llm-ollama
                            :chat-model "command-r:35b"
                            :embedding-model "command-r:35b"))
            ("llama3.1" . (make-llm-ollama
                                  :chat-model "llama3.1:8b"
                                  :embedding-model "llama3.1:8b"))
            )))

テスト

M-x ellama-make-table

CREATE TABLE product (
  id   int,
  name varchar(10),
  col  varchar(10) );

↑こう書いて、「M-x ellama-make-table」を実行すると、 ↓こう表示されます

Here's how you can represent your SQL CREATE TABLE statement as a
Markdown table:

| Column | Data Type    |
|--------|--------------|
| id     |int           |
| name   | varchar(10)  |
| col    | varchar(10)  |

This markdown table represents
the "product" table with its columns and their data types.

M-x ellama-make-format ⏎ json

CREATE TABLE product (
  id   int,
  name varchar(10),
  col  varchar(10) );

↑こう書いて、「M-x ellama-make-format ⏎ json ⏎」を実行すると、 ↓こう表示されます

{"table_name": "product",
 "columns": [
   { "name": "id",   "type": "int"},
   { "name": "name", "type": "varchar(10)" },
   { "name": "col",  "type": "varchar(10)" } ] }

M-x ellama-summarize 、M-x ellama-translate

CREATE TABLE product (
  id   int,
  name varchar(10),
  col  varchar(10) );

↑こう書いて、「M-x ellama-summarize」を実行すると、 ↓こう表示されます

The given text creates a table named "product" in a database.
This table has three columns: "id","name", and "col".
The "id" column is of integer type, while the "name" and "col" columns are of
variable character type, with maximum lengths of 10 characters each.

更に「M-x ellama-translate」を実行すると、 ↓こう表示されます

入力されたテキストは、
データベースに「product」という名前のテーブルを作成します。
このテーブルには、3つの列があります:「id」、「name」、および「col」。
「id」は整数型で、「name」と「col」は
それぞれ10文字以下の変長文字型の列です。