Added Japanese translation of documentation

This commit is contained in:
Jesse C. Lin 2024-02-05 19:05:38 +08:00
parent a896079705
commit 791cdf416c
14 changed files with 2469 additions and 0 deletions

335
README_ja.md Normal file
View File

@ -0,0 +1,335 @@
<div align="center">
<img alt="ollama" height="200px" src="https://github.com/jmorganca/ollama/assets/3325447/0d0b44e2-8f4a-4e99-9b52-a5c1c741c8f7">
</div>
# Ollama
[![Discord](https://dcbadge.vercel.app/api/server/ollama?style=flat&compact=true)](https://discord.gg/ollama)
大規模な言語モデルをローカルでセットアップし、実行しましょう。
### macOS
[Download](https://ollama.ai/download/Ollama-darwin.zip)
### Windows
近日公開予定現時点では、WSL2を介してWindowsにOllamaをインストールすることができます。
### Linux と WSL2
```
curl https://ollama.ai/install.sh | sh
```
[手動インストール手順](https://github.com/jmorganca/ollama/blob/main/docs/linux.md)
### Docker
公式の [Ollama Docker イメージ](https://hub.docker.com/r/ollama/ollama) である `ollama/ollama` は Docker Hub で利用可能です。
### ライブラリー
- [ollama-python](https://github.com/ollama/ollama-python)
- [ollama-js](https://github.com/ollama/ollama-js)
## クイックスタート
[Llama 2](https://ollama.ai/library/llama2) を実行してチャットするには:
```
ollama run llama2
```
## モデルライブラリ
Ollamaは[ollama.ai/library](https://ollama.ai/library 'ollama model library')で利用可能なオープンソースモデルのリストをサポートしています。
以下はダウンロード可能ないくつかのオープンソースモデルの例です:
| モデル | パラメーター | サイズ | ダウンロード |
| ------------------ | ---------- | ----- | ------------------------------ |
| Llama 2 | 7B | 3.8GB | `ollama run llama2` |
| Mistral | 7B | 4.1GB | `ollama run mistral` |
| Dolphin Phi | 2.7B | 1.6GB | `ollama run dolphin-phi` |
| Phi-2 | 2.7B | 1.7GB | `ollama run phi` |
| Neural Chat | 7B | 4.1GB | `ollama run neural-chat` |
| Starling | 7B | 4.1GB | `ollama run starling-lm` |
| Code Llama | 7B | 3.8GB | `ollama run codellama` |
| Llama 2 Uncensored | 7B | 3.8GB | `ollama run llama2-uncensored` |
| Llama 2 13B | 13B | 7.3GB | `ollama run llama2:13b` |
| Llama 2 70B | 70B | 39GB | `ollama run llama2:70b` |
| Orca Mini | 3B | 1.9GB | `ollama run orca-mini` |
| Vicuna | 7B | 3.8GB | `ollama run vicuna` |
| LLaVA | 7B | 4.5GB | `ollama run llava` |
>注意: 7Bモデルを実行するには少なくとも8 GBのRAMが必要であり、13Bモデルを実行するには16 GB、33Bモデルを実行するには32 GBが必要です。
## モデルをカスタマイズする
### GGUF からインポート
OllamaはModelfileでのGGUFモデルのインポートをサポートしています。
1. `Modelfile`という名前のファイルを作成し、インポートしたいモデルのローカルファイルパスを指定する`FROM`命令を記述します。
```
FROM ./vicuna-33b.Q4_0.gguf
```
2. Ollamaでモデルを作成します。
```
ollama create example -f Modelfile
```
3. モデルを実行します。
```
ollama run example
```
### PyTorch または Safetensor からのインポート
詳細については、[ガイド](docs_ja/import.md)を参照してください。
### プロンプトをカスタマイズする
Ollamaライブラリのモデルは、プロンプトでカスタマイズできます。たとえば、`llama2`モデルをカスタマイズするには、次のようにします:
```
ollama pull llama2
```
`Modelfile`を作成してください:
```
FROM llama2
# 温度を1に設定してください高いほど創造的、低いほど論理的
PARAMETER temperature 1
# システムメッセージを設定してください。
SYSTEM """
あなたはスーパーマリオブラザーズのマリオです。マリオ、アシスタントとしてのみお答えください。
"""
```
次に、モデルを作成して実行してください:
```
ollama create mario -f ./Modelfile
ollama run mario
>>> こんにちは!
マリオだよ。
```
さらなる例については、[examples](examples) ディレクトリを参照してください。Modelfileの操作に関する詳細は、[Modelfile](docs_ja/modelfile.md) のドキュメントをご覧ください。
## CLI リファレンス
### モデルを作成する
`ollama create` は、Modelfile からモデルを作成するために使用されます。
```
ollama create mymodel -f ./Modelfile
```
### モデルを引っ張る
```
ollama pull llama2
```
> このコマンドは、ローカルのモデルを更新するためにも使用できます。
差分のみが取得されます。
### モデルを削除する
```
ollama rm llama2
```
### モデルをコピーする
```
ollama cp llama2 my-llama2
```
### 複数行入力
複数行の入力の場合、テキストを `"""` で囲むことができます:
```
>>> """こんにちは、
... 世界!
... """
私は基本的なプログラムで、コンソールに有名な「こんにちは、世界!」のメッセージを表示します。
```
### マルチモーダルモデル
```
>>> この画像には何がありますか? /Users/jmorgan/Desktop/smile.png
画像には黄色い笑顔の絵文字があり、おそらく画像の中心的な焦点です。
```
### プロンプトを引数として渡します
```
$ ollama run llama2 "このファイルを要約してください:$(cat README_ja.md)"
Ollamaは、ローカルマシン上で言語モデルを構築および実行するための軽量で拡張可能なフレームワークです。モデルの作成、実行、および管理のためのシンプルなAPIを提供し、さらにさまざまなアプリケーションで簡単に使用できる事前に構築されたモデルのライブラリも提供しています。
```
### コンピュータ上のモデルをリストする
```
ollama list
```
### オラマを開始
`ollama serve`は、デスクトップアプリケーションを実行せずにOllamaを起動したい場合に使用します。
## ビルディング
`cmake``go`をインストールしてください:
```
brew install cmake go
```
その後、依存関係を生成してください:
```
go generate ./...
```
その後、バイナリをビルドしてください:
```
go build .
```
より詳細な手順は[開発者ガイド](https://github.com/jmorganca/ollama/blob/main/docs/development.md)に記載されています。
### ローカルビルドの実行
次に、サーバーを起動しますL
```
./ollama serve
```
最後に、別のシェルでモデルを実行します:
```
./ollama run llama2
```
## REST API
Ollamaにはモデルの実行と管理のためのREST APIがあります。
### 応答を生成する
```
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt":"空はなぜ青いのでしょうか?"
}'
```
### モデルとチャットする
```
curl http://localhost:11434/api/chat -d '{
"model": "mistral",
"messages": [
{ "role": "user", "content": "空はなぜ青いのでしょうか?" }
]
}'
```
すべてのエンドポイントについては、[APIドキュメント](./docs_ja/api.md)を参照してください。
## コミュニティの統合
### ウェブとデスクトップ
- [Bionic GPT](https://github.com/bionic-gpt/bionic-gpt)
- [HTML UI](https://github.com/rtcfirefly/ollama-ui)
- [Chatbot UI](https://github.com/ivanfioravanti/chatbot-ollama)
- [Typescript UI](https://github.com/ollama-interface/Ollama-Gui?tab=readme-ov-file)
- [Minimalistic React UI for Ollama Models](https://github.com/richawo/minimal-llm-ui)
- [Web UI](https://github.com/ollama-webui/ollama-webui)
- [Ollamac](https://github.com/kevinhermawan/Ollamac)
- [big-AGI](https://github.com/enricoros/big-agi/blob/main/docs/config-ollama.md)
- [Cheshire Cat assistant framework](https://github.com/cheshire-cat-ai/core)
- [Amica](https://github.com/semperai/amica)
- [chatd](https://github.com/BruceMacD/chatd)
- [Ollama-SwiftUI](https://github.com/kghandour/Ollama-SwiftUI)
- [MindMac](https://mindmac.app)
### ターミナル
- [oterm](https://github.com/ggozad/oterm)
- [Ellama Emacs client](https://github.com/s-kostyaev/ellama)
- [Emacs client](https://github.com/zweifisch/ollama)
- [gen.nvim](https://github.com/David-Kunz/gen.nvim)
- [ollama.nvim](https://github.com/nomnivore/ollama.nvim)
- [ogpt.nvim](https://github.com/huynle/ogpt.nvim)
- [gptel Emacs client](https://github.com/karthink/gptel)
- [Oatmeal](https://github.com/dustinblackman/oatmeal)
- [cmdh](https://github.com/pgibler/cmdh)
### データベース
- [MindsDB](https://github.com/mindsdb/mindsdb/blob/staging/mindsdb/integrations/handlers/ollama_handler/README.md)
### パッケージマネージャー
- [Pacman](https://archlinux.org/packages/extra/x86_64/ollama/)
### ライブラリー
- [LangChain](https://python.langchain.com/docs/integrations/llms/ollama) and [LangChain.js](https://js.langchain.com/docs/modules/model_io/models/llms/integrations/ollama) with [example](https://js.langchain.com/docs/use_cases/question_answering/local_retrieval_qa)
- [LangChainGo](https://github.com/tmc/langchaingo/) with [example](https://github.com/tmc/langchaingo/tree/main/examples/ollama-completion-example)
- [LlamaIndex](https://gpt-index.readthedocs.io/en/stable/examples/llm/ollama.html)
- [LiteLLM](https://github.com/BerriAI/litellm)
- [OllamaSharp for .NET](https://github.com/awaescher/OllamaSharp)
- [Ollama for Ruby](https://github.com/gbaptista/ollama-ai)
- [Ollama-rs for Rust](https://github.com/pepperoni21/ollama-rs)
- [Ollama4j for Java](https://github.com/amithkoujalgi/ollama4j)
- [ModelFusion Typescript Library](https://modelfusion.dev/integration/model-provider/ollama)
- [OllamaKit for Swift](https://github.com/kevinhermawan/OllamaKit)
- [Ollama for Dart](https://github.com/breitburg/dart-ollama)
- [Ollama for Laravel](https://github.com/cloudstudio/ollama-laravel)
- [LangChainDart](https://github.com/davidmigloz/langchain_dart)
- [Semantic Kernel - Python](https://github.com/microsoft/semantic-kernel/tree/main/python/semantic_kernel/connectors/ai/ollama)
- [Haystack](https://github.com/deepset-ai/haystack-integrations/blob/main/integrations/ollama.md)
- [Ollama for R - rollama](https://github.com/JBGruber/rollama)
### 携帯
- [Enchanted](https://github.com/AugustDev/enchanted)
- [Maid](https://github.com/Mobile-Artificial-Intelligence/maid)
### 拡張機能とプラグイン
- [Raycast extension](https://github.com/MassimilianoPasquini97/raycast_ollama)
- [Discollama](https://github.com/mxyng/discollama) (Discord bot inside the Ollama discord channel)
- [Continue](https://github.com/continuedev/continue)
- [Obsidian Ollama plugin](https://github.com/hinterdupfinger/obsidian-ollama)
- [Logseq Ollama plugin](https://github.com/omagdy7/ollama-logseq)
- [Dagger Chatbot](https://github.com/samalba/dagger-chatbot)
- [Discord AI Bot](https://github.com/mekb-turtle/discord-ai-bot)
- [Ollama Telegram Bot](https://github.com/ruecat/ollama-telegram)
- [Hass Ollama Conversation](https://github.com/ej52/hass-ollama-conversation)
- [Rivet plugin](https://github.com/abrenneke/rivet-plugin-ollama)
- [Llama Coder](https://github.com/ex3ndr/llama-coder) (Copilot alternative using Ollama)
- [Obsidian BMO Chatbot plugin](https://github.com/longy2k/obsidian-bmo-chatbot)
- [Open Interpreter](https://docs.openinterpreter.com/language-model-setup/local-models/ollama)
- [twinny](https://github.com/rjmacarthy/twinny) (Copilot and Copilot chat alternative using Ollama)

25
docs_ja/README.md Normal file
View File

@ -0,0 +1,25 @@
# ドキュメンテーション
始めるには、プロジェクトの **[クイックスタート](../README_ja.md#クイックスタート)** を参照してください。
Ollamaは、AIモデルをあなたのハードウェアで実行するためのツールです。多くのユーザーは、Ollamaと連携するためにコマンドラインインターフェースCLIを選択します。CLIで使用できるすべてのコマンドについて詳しくは、**[メイン Readme](../README_ja.md)** を参照してください。
RESTful APIは、Python、JavaScript、Typescript、Go、Rustなど、任意の言語を使用して利用できます。APIの使用方法について詳しくは、**[APIドキュメント](./api.md)** を参照してください。
新しいモデルを作成するか、ライブラリにすでに存在するモデルを変更するには、Modelfileを使用します。Modelfileの構文について詳しくは、**[Modelfileドキュメント](./modelfile.md)** を参照してください。
Hugging Faceや類似のサイトから見つかるソースモデルの重みを使用してモデルをインポートするには、**[Import ドキュメント](./import.md)** を参照してください。
Linuxへのインストールは、ほとんどの場合、Ollama.aiのスクリプトを使用することで簡単です。インストールの詳細や、CUDAドライバについての詳細については、**[Linux ドキュメント](./linux.md)** を参照してください。
多くのユーザーは、公式のDockerイメージを使用する柔軟性が好まれています。OllamaとDockerを使用する方法についての詳細は、**[Docker ドキュメント](https://hub.docker.com/r/ollama/ollama)** をご参照ください。
LinuxやMacへのインストールは簡単ですが、多くのユーザーは独自にOllamaをビルドすることを選択するかもしれません。これを行うには、**[開発ドキュメント](./development.md)** を参照してください。
Ollamaに問題が発生した場合、解決の出発点はログです。ログに関する詳細な情報は、**[トラブルシューティングガイド](./troubleshooting.md)** で確認できます。
最後に、他のどこにも当てはまらないすべての質問に対しては、**[FAQよくある質問](./faq.md)** があります。
[チュートリアル](./tutorials.md) は、タスクに文書を適用する方法を示します。
Ollamaの使用に関する動作するコードの例については、[Examples](../examples)を参照してください。

984
docs_ja/api.md Normal file
View File

@ -0,0 +1,984 @@
# API
## エンドポイント
- [完了を生成する](#完了を生成する)
- [チャットの完了を生成する](#チャットの完了を生成する)
- [モデルを作成する](#モデルを作成する)
- [ローカルモデルの一覧表示](#ローカルモデルの一覧表示)
- [モデル情報の表示](#モデル情報の表示)
- [モデルのコピー](#モデルのコピー)
- [モデルの削除](#モデルの削除)
- [モデルのプル](#モデルのプル)
- [モデルのプッシュ](#モデルのプッシュ)
- [埋め込みの生成](#埋め込みの生成)
## コンベンション
### モデル名
モデルの名前は model:tag の形式に従います。ここで、model には example/model のようなオプションの名前空間が付くことがあります。いくつかの例として、orca-mini:3b-q4_1 や llama2:70b があります。tag はオプションで、指定されていない場合はデフォルトで latest になります。tag は特定のバージョンを識別するために使用されます。
### 期間
すべての期間はナノ秒で返されます。
### ストリーミング応答
特定のエンドポイントでは、JSONオブジェクトとして応答をストリーミングでき、オプションで非ストリーミングの応答を返すこともできます。
## 完了を生成する
```shell
POST /api/generate
```
指定されたプロンプトに対して提供されたモデルで応答を生成します。これはストリーミングエンドポイントですので、一連の応答があります。最終的な応答オブジェクトには、リクエストからの統計情報や追加のデータが含まれます。
### パラメータ
- `model`: (必須)[モデル名](#モデル名)
- `prompt`: 応答を生成するためのプロンプト
- `images`: オプションBase64エンコードされた画像のリスト`llava`などのマルチモーダルモデル用)
高度なパラメータ(オプション):
- `format`: 応答の返却形式。現在唯一受け入れられている値は `json` です
- `options`: `temperature` など、[モデルファイル](./modelfile.md#有効なパラメータと値) のドキュメントにリストされている追加のモデルパラメーター
- `system`: `Modelfile` で定義されたものを上書きする)システムメッセージ
- `template`: 使用するプロンプトテンプレート(`Modelfile` で定義されたものを上書きする)
- `context`: `/generate` への前回のリクエストから返されるコンテキストパラメーター。これは短い対話的なメモリを維持するために使用できます
- `stream`: `false` の場合、応答はオブジェクトのストリームではなく、単一の応答オブジェクトとして返されます
- `raw`: `true` の場合、プロンプトには書式設定が適用されません。APIへのリクエストで完全なテンプレート化されたプロンプトを指定する場合は、`raw`
#### JSONモード
`format` パラメーターを `json` に設定して JSON モードを有効にします。これにより、応答が有効な JSON オブジェクトとして構造化されます。以下にJSONモードの[](#generate-request-json-mode) を参照してください。
> 注意: `prompt` でモデルにJSONを使用するように指示することが重要です。それ以外の場合、モデルは大量の空白を生成する可能性があります。
### 例
#### 生成リクエスト(ストリーミング)
##### リクエスト
```shell
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt": "Why is the sky blue?"
}'
```
##### レスポンス
JSONオブジェクトのストリームが返されます:
```json
{
"model": "llama2",
"created_at": "2023-08-04T08:52:19.385406455-07:00",
"response": "The",
"done": false
}
```
ストリーム内の最終応答には、生成に関する追加のデータも含まれます:
- `total_duration`: 応答の生成に費やした時間
- `load_duration`: モデルのロードに費やした時間 (ナノ秒)
- `prompt_eval_count`: プロンプト内のトークンの数
- `prompt_eval_duration`: プロンプトの評価に費やした時間 (ナノ秒)
- `eval_count`: 応答のトークンの数
- `eval_duration`: 応答の生成に費やされた時間 (ナノ秒)
- `context`: この応答で使用された会話のエンコード。これは会話のメモリを保持するために次のリクエストに送信できます
- `response`: ストリーミングされた場合は空です。ストリーミングされていない場合、これには完全な応答が含まれます
応答がトークン毎秒token/sでどれくらい速く生成されるかを計算するには、`eval_count``eval_duration` で割ります。
```json
{
"model": "llama2",
"created_at": "2023-08-04T19:22:45.499127Z",
"response": "",
"done": true,
"context": [1, 2, 3],
"total_duration": 10706818083,
"load_duration": 6338219291,
"prompt_eval_count": 26,
"prompt_eval_duration": 130079000,
"eval_count": 259,
"eval_duration": 4232710000
}
```
#### リクエスト(ストリーミングなし)
##### リクエスト
ストリーミングがオフの場合、1回の返信で応答を受け取ることができます。
```shell
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt": "Why is the sky blue?",
"stream": false
}'
```
##### レスポンス
`stream``false` に設定されている場合、応答は単一のJSONオブジェクトになります:
```json
{
"model": "llama2",
"created_at": "2023-08-04T19:22:45.499127Z",
"response": "The sky is blue because it is the color of the sky.",
"done": true,
"context": [1, 2, 3],
"total_duration": 5043500667,
"load_duration": 5025959,
"prompt_eval_count": 26,
"prompt_eval_duration": 325953000,
"eval_count": 290,
"eval_duration": 4709213000
}
```
#### リクエストJSONモード
> `format``json` に設定されている場合、出力は常に整形されたJSONオブジェクトになります。モデルにもJSONで応答するように指示することが重要です。
##### リクエスト
```shell
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt": "What color is the sky at different times of the day? Respond using JSON",
"format": "json",
"stream": false
}'
```
##### レスポンス
```json
{
"model": "llama2",
"created_at": "2023-11-09T21:07:55.186497Z",
"response": "{\n\"morning\": {\n\"color\": \"blue\"\n},\n\"noon\": {\n\"color\": \"blue-gray\"\n},\n\"afternoon\": {\n\"color\": \"warm gray\"\n},\n\"evening\": {\n\"color\": \"orange\"\n}\n}\n",
"done": true,
"context": [1, 2, 3],
"total_duration": 4648158584,
"load_duration": 4071084,
"prompt_eval_count": 36,
"prompt_eval_duration": 439038000,
"eval_count": 180,
"eval_duration": 4196918000
}
```
`response` の値は、次のようなJSONを含む文字列になります:
```json
{
"morning": {
"color": "blue"
},
"noon": {
"color": "blue-gray"
},
"afternoon": {
"color": "warm gray"
},
"evening": {
"color": "orange"
}
}
```
#### リクエスト(画像付き)
`llava``bakllava` などのマルチモーダルモデルに画像を提出するには、Base64エンコードされた `images` のリストを提供してください:
#### リクエスト
```shell
curl http://localhost:11434/api/generate -d '{
"model": "llava",
"prompt":"What is in this picture?",
"stream": false,
"images": ["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"]
}'
```
#### レスポンス
```
{
"model": "llava",
"created_at": "2023-11-03T15:36:02.583064Z",
"response": "A happy cartoon character, which is cute and cheerful.",
"done": true,
"context": [1, 2, 3],
"total_duration": 2938432250,
"load_duration": 2559292,
"prompt_eval_count": 1,
"prompt_eval_duration": 2195557000,
"eval_count": 44,
"eval_duration": 736432000
}
```
#### リクエスト (Raw モード)Request (Raw Mode)
In some cases, you may wish to bypass the templating system and provide a full prompt. In this case, you can use the `raw` parameter to disable templating. Also note that raw mode will not return a context.
##### リクエスト
```shell
curl http://localhost:11434/api/generate -d '{
"model": "mistral",
"prompt": "[INST] why is the sky blue? [/INST]",
"raw": true,
"stream": false
}'
```
##### レスポンス
```json
{
"model": "mistral",
"created_at": "2023-11-03T15:36:02.583064Z",
"response": " The sky appears blue because of a phenomenon called Rayleigh scattering.",
"done": true,
"total_duration": 8493852375,
"load_duration": 6589624375,
"prompt_eval_count": 14,
"prompt_eval_duration": 119039000,
"eval_count": 110,
"eval_duration": 1779061000
}
```
#### リクエストの生成(オプションあり)
モデルの設定をModelfileではなく実行時にカスタムオプションで設定したい場合は、`options` パラメータを使用できます。この例ではすべての利用可能なオプションを設定していますが、個々のオプションを任意に設定し、上書きしたくないものは省略できます。
##### リクエスト
```shell
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt": "Why is the sky blue?",
"stream": false,
"options": {
"num_keep": 5,
"seed": 42,
"num_predict": 100,
"top_k": 20,
"top_p": 0.9,
"tfs_z": 0.5,
"typical_p": 0.7,
"repeat_last_n": 33,
"temperature": 0.8,
"repeat_penalty": 1.2,
"presence_penalty": 1.5,
"frequency_penalty": 1.0,
"mirostat": 1,
"mirostat_tau": 0.8,
"mirostat_eta": 0.6,
"penalize_newline": true,
"stop": ["\n", "user:"],
"numa": false,
"num_ctx": 1024,
"num_batch": 2,
"num_gqa": 1,
"num_gpu": 1,
"main_gpu": 0,
"low_vram": false,
"f16_kv": true,
"vocab_only": false,
"use_mmap": true,
"use_mlock": false,
"embedding_only": false,
"rope_frequency_base": 1.1,
"rope_frequency_scale": 0.8,
"num_thread": 8
}
}'
```
##### レスポンス
```json
{
"model": "llama2",
"created_at": "2023-08-04T19:22:45.499127Z",
"response": "The sky is blue because it is the color of the sky.",
"done": true,
"context": [1, 2, 3],
"total_duration": 4935886791,
"load_duration": 534986708,
"prompt_eval_count": 26,
"prompt_eval_duration": 107345000,
"eval_count": 237,
"eval_duration": 4289432000
}
```
#### モデルの読み込み
If an empty prompt is provided, the model will be loaded into memory.
##### リクエスト
```shell
curl http://localhost:11434/api/generate -d '{
"model": "llama2"
}'
```
##### レスポンス
単一のJSONオブジェクトが返されます:
```json
{
"model": "llama2",
"created_at": "2023-12-18T19:52:07.071755Z",
"response": "",
"done": true
}
```
## チャットの完了を生成する
```shell
POST /api/chat
```
提供されたモデルとのチャットで次のメッセージを生成します。これはストリーミングエンドポイントですので、一連の応答があります。`"stream": false` を使用してストリーミングを無効にすることができます。最終的な応答オブジェクトには、リクエストからの統計情報や追加のデータが含まれます。
### パラメータ
- `model`: (必須) [モデル名](#モデル名)
- `messages`: チャットのメッセージ。これはチャットのメモリを保持するために使用できます
`message` オブジェクトには以下のフィールドがあります:
- `role`: メッセージの役割、`system``user`、または `assistant` のいずれか
- `content`:メッセージの内容
- `images` (オプション): メッセージに含める画像のリスト(`llava`などのマルチモーダルモデル用)
高度なパラメータ(オプション):
- `format`: 応答を返す形式。現在唯一受け入れられている値は `json` です
- `options`: [Modelfile](./modelfile.md#有効なパラメータと値)のドキュメントにリストされている追加のモデルパラメーター(`temperature`など)
- `template`: 使用するプロンプトテンプレート(`Modelfile`で定義されたものを上書きする)
- `stream`: `false`の場合、応答はオブジェクトのストリームではなく、単一の応答オブジェクトとして返されます
### 例
#### チャットリクエスト(ストリーミング)
##### リクエスト
ストリーミング応答でチャットメッセージを送信します。
```shell
curl http://localhost:11434/api/chat -d '{
"model": "llama2",
"messages": [
{
"role": "user",
"content": "why is the sky blue?"
}
]
}'
```
##### レスポンス
JSONオブジェクトのストリームが返されます:
```json
{
"model": "llama2",
"created_at": "2023-08-04T08:52:19.385406455-07:00",
"message": {
"role": "assistant",
"content": "The",
"images": null
},
"done": false
}
```
最終レスポンス:
```json
{
"model": "llama2",
"created_at": "2023-08-04T19:22:45.499127Z",
"done": true,
"total_duration": 4883583458,
"load_duration": 1334875,
"prompt_eval_count": 26,
"prompt_eval_duration": 342546000,
"eval_count": 282,
"eval_duration": 4535599000
}
```
#### チャットリクエスト (ストリーミングなし)
##### リクエスト
```shell
curl http://localhost:11434/api/chat -d '{
"model": "llama2",
"messages": [
{
"role": "user",
"content": "why is the sky blue?"
}
],
"stream": false
}'
```
##### レスポンス
```json
{
"model": "registry.ollama.ai/library/llama2:latest",
"created_at": "2023-12-12T14:13:43.416799Z",
"message": {
"role": "assistant",
"content": "Hello! How are you today?"
},
"done": true,
"total_duration": 5191566416,
"load_duration": 2154458,
"prompt_eval_count": 26,
"prompt_eval_duration": 383809000,
"eval_count": 298,
"eval_duration": 4799921000
}
```
#### チャットリクエスト(履歴あり)
Send a chat message with a conversation history. You can use this same approach to start the conversation using multi-shot or chain-of-thought prompting.
##### リクエスト
```shell
curl http://localhost:11434/api/chat -d '{
"model": "llama2",
"messages": [
{
"role": "user",
"content": "why is the sky blue?"
},
{
"role": "assistant",
"content": "due to rayleigh scattering."
},
{
"role": "user",
"content": "how is that different than mie scattering?"
}
]
}'
```
##### レスポンス
JSONオブジェクトのストリームが返されます:
```json
{
"model": "llama2",
"created_at": "2023-08-04T08:52:19.385406455-07:00",
"message": {
"role": "assistant",
"content": "The"
},
"done": false
}
```
最終レスポンス:
```json
{
"model": "llama2",
"created_at": "2023-08-04T19:22:45.499127Z",
"done": true,
"total_duration": 8113331500,
"load_duration": 6396458,
"prompt_eval_count": 61,
"prompt_eval_duration": 398801000,
"eval_count": 468,
"eval_duration": 7701267000
}
```
#### チャットリクエスト(画像付き)
##### リクエスト
チャットメッセージと会話履歴を送信します。
```shell
curl http://localhost:11434/api/chat -d '{
"model": "llava",
"messages": [
{
"role": "user",
"content": "what is in this image?",
"images": ["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"]
},
]
}'
```
##### レスポンス
```json
{
"model": "llava",
"created_at": "2023-12-13T22:42:50.203334Z",
"message": {
"role": "assistant",
"content": " The image features a cute, little pig with an angry facial expression. It's wearing a heart on its shirt and is waving in the air. This scene appears to be part of a drawing or sketching project.",
"images": null
},
"done": true,
"total_duration": 1668506709,
"load_duration": 1986209,
"prompt_eval_count": 26,
"prompt_eval_duration": 359682000,
"eval_count": 83,
"eval_duration": 1303285000
}
```
## モデルを作成する
```shell
POST /api/create
```
[`Modelfile`](./modelfile.md)からモデルを作成します。`modelfile`を単に`path`を設定するのではなく、Modelfileの内容に設定することをお勧めします。これはリモート作成のための要件です。リモートモデルの作成は、[Create a Blob](#create-a-blob)を使用してサーバーに対して`FROM``ADAPTER`などのファイルブロブ、フィールドを明示的に作成する必要があり、応答で示されたパスに対して値を使用します。
### パラメーター
- `name`: 作成するモデルの名前
- `modelfile` (オプション): Modelfileの内容
- `stream`: (オプション): `false` の場合、応答はオブジェクトのストリームではなく、単一の応答オブジェクトとして返されます
- `path` (オプション): Modelfileへのパス
### 例
#### 新しいモデルを作成する
`Modelfile` から新しいモデルを作成します。
##### リクエスト
```shell
curl http://localhost:11434/api/create -d '{
"name": "mario",
"modelfile": "FROM llama2\nSYSTEM You are mario from Super Mario Bros."
}'
```
##### レスポンス
JSONオブジェクトのストリーム。最終的なJSONオブジェクトには `"status": "success"` が表示されることに注意してください。
```json
{"status":"reading model metadata"}
{"status":"creating system layer"}
{"status":"using already created layer sha256:22f7f8ef5f4c791c1b03d7eb414399294764d7cc82c7e94aa81a1feb80a983a2"}
{"status":"using already created layer sha256:8c17c2ebb0ea011be9981cc3922db8ca8fa61e828c5d3f44cb6ae342bf80460b"}
{"status":"using already created layer sha256:7c23fb36d80141c4ab8cdbb61ee4790102ebd2bf7aeff414453177d4f2110e5d"}
{"status":"using already created layer sha256:2e0493f67d0c8c9c68a8aeacdf6a38a2151cb3c4c1d42accf296e19810527988"}
{"status":"using already created layer sha256:2759286baa875dc22de5394b4a925701b1896a7e3f8e53275c36f75a877a82c9"}
{"status":"writing layer sha256:df30045fe90f0d750db82a058109cecd6d4de9c90a3d75b19c09e5f64580bb42"}
{"status":"writing layer sha256:f18a68eb09bf925bb1b669490407c1b1251c5db98dc4d3d81f3088498ea55690"}
{"status":"writing manifest"}
{"status":"success"}
```
### Blobの存在を確認
```shell
HEAD /api/blobs/:digest
```
`FROM`または`ADAPTER`フィールドに使用されるファイルブロブがサーバー上に存在することを確認します。これはOllama.aiではなく、あなたのOllamaサーバーを確認しています。
#### クエリパラメータ
- `digest`: BLOB の SHA256 ダイジェスト
#### 例
##### リクエスト
```shell
curl -I http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2
```
##### レスポンス
ブロブが存在する場合は200 OKを返し、存在しない場合は404 Not Foundを返します。
### Create a Blob
```shell
POST /api/blobs/:digest
```
サーバー上のファイルからブロブを作成します。サーバーのファイルパスを返します。
#### クエリパラメータ
- `digest`: ファイルの予想されるSHA256ダイジェスト
#### 例
##### リクエスト
```shell
curl -T model.bin -X POST http://localhost:11434/api/blobs/sha256:29fdb92e57cf0827ded04ae6461b5931d01fa595843f55d36f5b275a52087dd2
```
##### レスポンス
ブロブが成功製作された場合は201 Createdを返し、使用されたダイジェストが予想外の場合は400 Bad Requestを返します。
## ローカルモデルの一覧表示
```shell
GET /api/tags
```
ローカルで利用可能なモデルの一覧を表示します。
### 例
#### リクエスト
```shell
curl http://localhost:11434/api/tags
```
#### レスポンス
単一のJSONオブジェクトが返されます。
```json
{
"models": [
{
"name": "codellama:13b",
"modified_at": "2023-11-04T14:56:49.277302595-07:00",
"size": 7365960935,
"digest": "9f438cb9cd581fc025612d27f7c1a6669ff83a8bb0ed86c94fcf4c5440555697",
"details": {
"format": "gguf",
"family": "llama",
"families": null,
"parameter_size": "13B",
"quantization_level": "Q4_0"
}
},
{
"name": "llama2:latest",
"modified_at": "2023-12-07T09:32:18.757212583-08:00",
"size": 3825819519,
"digest": "fe938a131f40e6f6d40083c9f0f430a515233eb2edaa6d72eb85c50d64f2300e",
"details": {
"format": "gguf",
"family": "llama",
"families": null,
"parameter_size": "7B",
"quantization_level": "Q4_0"
}
}
]
}
```
## モデル情報の表示
```shell
POST /api/show
```
モデルに関する情報を表示します。詳細、モデルファイル、テンプレート、パラメータ、ライセンス、およびシステムプロンプトを含みます。
### パラメーター
- `name`: 表示するモデルの名前
### 例
#### リクエスト
```shell
curl http://localhost:11434/api/show -d '{
"name": "llama2"
}'
```
#### レスポンス
```json
{
"modelfile": "# Modelfile generated by \"ollama show\"\n# To build a new Modelfile based on this one, replace the FROM line with:\n# FROM llava:latest\n\nFROM /Users/matt/.ollama/models/blobs/sha256:200765e1283640ffbd013184bf496e261032fa75b99498a9613be4e94d63ad52\nTEMPLATE \"\"\"{{ .System }}\nUSER: {{ .Prompt }}\nASSSISTANT: \"\"\"\nPARAMETER num_ctx 4096\nPARAMETER stop \"\u003c/s\u003e\"\nPARAMETER stop \"USER:\"\nPARAMETER stop \"ASSSISTANT:\"",
"parameters": "num_ctx 4096\nstop \u003c/s\u003e\nstop USER:\nstop ASSSISTANT:",
"template": "{{ .System }}\nUSER: {{ .Prompt }}\nASSSISTANT: ",
"details": {
"format": "gguf",
"family": "llama",
"families": ["llama", "clip"],
"parameter_size": "7B",
"quantization_level": "Q4_0"
}
}
```
## モデルのコピー
```shell
POST /api/copy
```
モデルをコピーします。既存のモデルから別の名前のモデルを作成します。
### 例
#### リクエスト
```shell
curl http://localhost:11434/api/copy -d '{
"source": "llama2",
"destination": "llama2-backup"
}'
```
#### レスポンス
成功した場合は200 OKを返し、ソースモデルが存在しない場合は404 Not Foundを返します。
## モデルの削除
```shell
DELETE /api/delete
```
モデルとそのデータを削除します。
### パラメーター
- `name`: 削除するモデル名
### 例
#### リクエスト
```shell
curl -X DELETE http://localhost:11434/api/delete -d '{
"name": "llama2:13b"
}'
```
#### レスポンス
成功した場合は200 OKを返し、削除されるモデルが存在しない場合は404 Not Foundを返します。
## モデルのプル
```shell
POST /api/pull
```
Ollamaライブラリからモデルをダウンロードします。キャンセルされたプルは中断した場所から再開され、複数の呼び出しは同じダウンロード進捗を共有します。
### パラメーター
- `name`: プルするモデルの名前
- `insecure`: (オプション) ライブラリへの安全でない接続を許可します。開発中に自分のライブラリからプルする場合にのみ使用してください
- `stream`: (オプション) `false`の場合、レスポンスはオブジェクトのストリームではなく、単一のレスポンスオブジェクトとして返されます
### 例
#### リクエスト
```shell
curl http://localhost:11434/api/pull -d '{
"name": "llama2"
}'
```
#### レスポンス
`stream`が指定されていないか、または`true`に設定されている場合、JSONオブジェクトのストリームが返されます:
最初のオブジェクトはマニフェストです:
```json
{
"status": "pulling manifest"
}
```
その後、一連のダウンロードの応答があります。ダウンロードが完了するまで、`completed`キーは含まれないかもしれません。ダウンロードするファイルの数は、マニフェストで指定されたレイヤーの数に依存します。
```json
{
"status": "downloading digestname",
"digest": "digestname",
"total": 2142590208,
"completed": 241970
}
```
すべてのファイルがダウンロードされたら、最終的な応答は以下の通りです:
```json
{
"status": "verifying sha256 digest"
}
{
"status": "writing manifest"
}
{
"status": "removing any unused layers"
}
{
"status": "success"
}
```
`stream``false`に設定されている場合、応答は単一のJSONオブジェクトです:
```json
{
"status": "success"
}
```
## モデルのプッシュ
```shell
POST /api/push
```
モデルをモデルライブラリにアップロードします。まず、ollama.aiに登録し、公開鍵を追加する必要があります。
### パラメーター
- `name`: `<namespace>/<model>:<tag>`の形式でプッシュするモデルの名前
- `insecure`: (オプション)ライブラリへの安全でない接続を許可します。開発中にライブラリにプッシュする場合のみ使用してください
- `stream`: (オプション)`false` の場合、レスポンスは単一のレスポンスオブジェクトとして返されます。オブジェクトのストリームではありません
### 例
#### リクエスト
```shell
curl http://localhost:11434/api/push -d '{
"name": "mattw/pygmalion:latest"
}'
```
#### レスポンス
`stream` が指定されていないか、または `true` に設定されている場合、JSONオブジェクトのストリームが返されます:
```json
{ "status": "retrieving manifest" }
```
その後:
```json
{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}
```
次に、アップロードの応答が続きます:
```json
{
"status": "starting upload",
"digest": "sha256:bc07c81de745696fdf5afca05e065818a8149fb0c77266fb584d9b2cba3711ab",
"total": 1928429856
}
```
最後に、アップロードが完了すると"
```json
{"status":"pushing manifest"}
{"status":"success"}
```
`stream``false`に設定されている場合、応答は単一のJSONオブジェクトとなります:
```json
{ "status": "success" }
```
## 埋め込みの生成
```shell
POST /api/embeddings
```
モデルから埋め込みを生成する
### パラメーター
- `model`: 埋め込みを生成するモデルの名前
- `prompt`: 埋め込みを生成するためのテキスト
高度なパラメータ:
- `options`: `Modelfile` の[ドキュメント](./modelfile.md#有効なパラメータと値)にリストされている `temperature` などの追加のモデルパラメータ
### 例
#### リクエスト
```shell
curl http://localhost:11434/api/embeddings -d '{
"model": "llama2",
"prompt": "Here is an article about llamas..."
}'
```
#### レスポンス
```json
{
"embedding": [
0.5670403838157654, 0.009260174818336964, 0.23178744316101074, -0.2916173040866852, -0.8924556970596313,
0.8785552978515625, -0.34576427936553955, 0.5742510557174683, -0.04222835972905159, -0.137906014919281
]
}
```

124
docs_ja/development.md Normal file
View File

@ -0,0 +1,124 @@
# 開発
必要なツールをインストールしてください:
- cmake バージョン3.24以上
- go バージョン1.21以上
- gcc バージョン11.4.0以上
```bash
brew install go cmake gcc
```
オプションでデバッグおよび詳細なログを有効にする:
```bash
# At build time
export CGO_CFLAGS="-g"
# At runtime
export OLLAMA_DEBUG=1
```
必要なライブラリを取得し、ネイティブLLMコードをビルドしてください:
```bash
go generate ./...
```
次に、Ollamaをビルドしてください:
```bash
go build .
```
これで、`ollama`を実行できます:
```bash
./ollama
```
### Linux
#### Linux CUDA (NVIDIA)
*お使いのオペレーティングシステムディストリビューションには、既にNVIDIA CUDA用のパッケージが含まれているかもしれません。ディストリビューションパッケージは通常好ましいですが、手順はディストリビューションに依存します。可能であれば、ディストリビューション固有のドキュメントを確認して、依存関係に関する情報を参照してください。*
`cmake`および`golang`をインストールし、[NVIDIA CUDA](https://developer.nvidia.com/cuda-downloads)の開発およびランタイムパッケージもインストールしてください。
通常、ビルドスクリプトはCUDAを自動検出しますが、Linuxディストリビューションやインストールアプローチが異常なパスを使用する場合は、環境変数`CUDA_LIB_DIR`を共有ライブラリの場所に、`CUDACXX`をnvccコンパイラの場所に指定することができます。また、`CMAKE_CUDA_ARCHITECTURES`を設定して、対象のCUDAアーキテクチャをカスタマイズできます"50;60;70")。
その後、依存関係を生成してください:
```
go generate ./...
```
その後、バイナリをビルドしてください:
```
go build .
```
#### Linux ROCm (AMD)
*お使いのオペレーティングシステムディストリビューションには、すでにAMD ROCmおよびCLBlast用のパッケージが含まれているかもしれません。ディストリビューションパッケージは通常好ましいですが、手順はディストリビューションに依存します。可能であれば、ディストリビューション固有のドキュメントを確認して、依存関係に関する情報を参照してください。*
まず、[CLBlast](https://github.com/CNugteren/CLBlast/blob/master/doc/installation.md)と[ROCm](https://rocm.docs.amd.com/en/latest/deploy/linux/quick_start.html)の開発パッケージ、および`cmake``golang`をインストールしてください。
通常、ビルドスクリプトはROCmを自動検出しますが、Linuxディストリビューションやインストールアプローチが異常なパスを使用する場合は、環境変数`ROCM_PATH`をROCmのインストール場所に通常は`/opt/rocm`)、`CLBlast_DIR`をCLBlastのインストール場所に通常は`/usr/lib/cmake/CLBlast`)指定することができます。また、`AMDGPU_TARGETS`を設定してAMD GPUの対象をカスタマイズすることもできます`AMDGPU_TARGETS="gfx1101;gfx1102"`)。
```
go generate ./...
```
その後、バイナリをビルドしてください:
```
go build .
```
ROCmは実行時にGPUにアクセスするために特権が必要です。ほとんどのディストリビューションでは、ユーザーアカウントを`render`グループに追加するか、rootとして実行することができます。
ROCm requires elevated privileges to access the GPU at runtime. On most distros you can add your user account to the `render` group, or run as root.
#### 高度なCPU設定
デフォルトでは、`go generate ./...`を実行すると、一般的なCPUファミリとベクトル数学の能力に基づいて、いくつかの異なるバリエーションのLLMライブラリがコンパイルされます。これには、ほとんどの64ビットCPUで動作する最低限のバージョンも含まれており、パフォーマンスはやや低いです。実行時に、Ollamaは最適なバリエーションを自動検出してロードします。プロセッサにカスタマイズされたCPUベースのビルドを作成したい場合は、`OLLAMA_CUSTOM_CPU_DEFS`を使用したいllama.cppフラグに設定できます。たとえば、Intel i9-9880H向けに最適化されたバイナリをコンパイルする場合は、次のようにします:
```
OLLAMA_CUSTOM_CPU_DEFS="-DLLAMA_AVX=on -DLLAMA_AVX2=on -DLLAMA_F16C=on -DLLAMA_FMA=on" go generate ./...
go build .
```
#### コンテナ化されたLinuxビルド
Dockerが利用可能な場合、CUDAおよびROCmの依存関係が含まれている`./scripts/build_linux.sh`を使用してLinux用のバイナリをビルドできます。生成されたバイナリは`./dist`に配置されます。
### Windows
注意OllamaのWindowsビルドはまだ開発中です。
必要なツールをインストールしてください:
- MSVCツールチェーン - C/C++およびcmakeが最小要件です
- go バージョン1.21以上
- GCCを搭載したMinGWいずれかを選択
- <https://www.mingw-w64.org/>
- <https://www.msys2.org/>
```powershell
$env:CGO_ENABLED="1"
go generate ./...
go build .
```
#### Windows CUDA (NVIDIA)
上記で説明した一般的なWindows開発ツールに加えて、以下をインストールしてください:
- [NVIDIA CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html)

124
docs_ja/faq.md Normal file
View File

@ -0,0 +1,124 @@
# FAQ
## Ollamaをアップグレードする方法はどのようになりますか
Ollamaをアップグレードするには、インストールプロセスを再実行してください。Macでは、メニューバーにあるOllamaアイコンをクリックし、更新が利用可能な場合は再起動オプションを選択してください。
## ログを表示する方法は?
ログの使用についての詳細については、[トラブルシューティング](./troubleshooting.md)のドキュメントを参照してください。
<div id="how-do-i-configure-ollama-server">
<h2>Ollamaサーバーの設定方法は</h2>
</div>
Ollamaサーバーは、環境変数を使用して設定できます。
### Macでの環境変数の設定
OllamaがmacOSアプリケーションとして実行される場合、環境変数は`launchctl`を使用して設定する必要があります:
1. 各環境変数に対して、`launchctl setenv`を呼び出します。
```bash
launchctl setenv OLLAMA_HOST "0.0.0.0"
```
2. Ollamaアプリケーションを再起動します。
### Linuxでの環境変数の設定
Ollamaがsystemdサービスとして実行される場合、環境変数は`systemctl`を使用して設定する必要があります:
1. `systemctl edit ollama.service`を呼び出して、systemdサービスを編集します。これによりエディタが開きます。
2. 各環境変数に対して、`[Service]`セクションの下に`Environment`という行を追加します:
```ini
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
```
3. 保存して終了します。
4. `systemd`をリロードし、Ollamaを再起動します
```bash
systemctl daemon-reload
systemctl restart ollama
```
## Ollamaをネットワークで公開する方法は
Ollamaはデフォルトで127.0.0.1ポート11434にバインドされます。バインドアドレスを変更するには、`OLLAMA_HOST`環境変数を使用してください。
環境変数の設定方法については、[上記](#how-do-i-configure-ollama-server)のセクションを参照してください。
## 追加のウェブ起源がOllamaにアクセスできるようにする方法は
Ollamaはデフォルトで`127.0.0.1`および`0.0.0.0`からのクロスオリジンリクエストを許可します。追加の起源は`OLLAMA_ORIGINS`で構成できます。
環境変数の設定方法については、[上記](#how-do-i-configure-ollama-server)のセクションを参照してください。
## 追加のウェブ起源がOllamaにアクセスできるようにする方法は
Ollamaはデフォルトで`127.0.0.1`および`0.0.0.0`からのクロスオリジンリクエストを許可します。追加の起源は`OLLAMA_ORIGINS`で構成できます。
環境変数の設定方法については、[上記](#how-do-i-configure-ollama-server)のセクションを参照してください。
## モデルはどこに保存されていますか?
- macOS: `~/.ollama/models`
- Linux: `/usr/share/ollama/.ollama/models`
### それらを異なる場所に設定するにはどうすればよいですか?
別のディレクトリを使用する必要がある場合は、環境変数 `OLLAMA_MODELS` を選択したディレクトリに設定してください。
環境変数の設定方法については、[上記](#how-do-i-configure-ollama-server)のセクションを参照してください。
## Ollamaはプロンプトや回答をOllama.aiに送信して何らかの方法で使用しますか
いいえ、Ollamaは完全にローカルで実行され、会話データは決してあなたのマシンを離れません。
## Visual Studio CodeでOllamaを使用する方法は
既にVSCodeや他のエディタでOllamaを活用するための多くのプラグインが利用可能です。メインリポジトリの末尾にある[拡張機能とプラグイン](https://github.com/jmorganca/ollama#extensions--plugins)のリストをご覧ください。
## プロキシを使用する方法は?
`HTTP_PROXY`または`HTTPS_PROXY`が構成されている場合、Ollamaはプロキシサーバーと互換性があります。これらの変数を使用する場合は、`ollama serve`が値にアクセスできるように設定されていることを確認してください。`HTTPS_PROXY`を使用する場合は、プロキシ証明書がシステム証明書としてインストールされていることを確認してください。環境変数の設定方法については、上記のセクションを参照してください。
### Docker内でプロキシを使用する方法は
Ollama Dockerコンテナイメージは、コンテナを起動する際に `-e HTTPS_PROXY=https://proxy.example.com` を渡すことでプロキシを使用するように構成できます。
代替として、Dockerデーモン自体をプロキシを使用するように構成することもできます。Docker Desktopの[macOS](https://docs.docker.com/desktop/settings/mac/#proxies)、[Windows](https://docs.docker.com/desktop/settings/windows/#proxies)、[Linux](https://docs.docker.com/desktop/settings/linux/#proxies)に関する手順が利用可能であり、またDocker [daemon with systemd](https://docs.docker.com/config/daemon/systemd/#httphttps-proxy)についても指示があります。
HTTPSを使用する場合は、証明書がシステム証明書としてインストールされていることを確認してください。これには、自己署名証明書を使用する場合には新しいDockerイメージが必要となるかもしれません。
```dockerfile
FROM ollama/ollama
COPY my-ca.pem /usr/local/share/ca-certificates/my-ca.crt
RUN update-ca-certificates
```
このイメージをビルドして実行します:
```shell
docker build -t ollama-with-ca .
docker run -d -e HTTPS_PROXY=https://my.proxy.example.com -p 11434:11434 ollama-with-ca
```
## Docker内でGPUアクセラレーションを使用する方法は
Ollama Dockerコンテナは、LinuxまたはWindowsWSL2を使用する場合でGPUアクセラレーションを構成することができます。これには[nvidia-container-toolkit](https://github.com/NVIDIA/nvidia-container-toolkit)が必要です。詳細については、[ollama/ollama](https://hub.docker.com/r/ollama/ollama)を参照してください。
GPUアクセラレーションは、macOSのDocker DesktopではGPUのパススルーやエミュレーションの不足のため利用できません。
## Windows 10のWSL2でネットワーキングが遅いのはなぜですか
これはOllamaのインストールやモデルのダウンロードに影響する可能性があります。
`Control Panel > Networking and Internet > View network status and tasks` を開き、左パネルで `Change adapter settings` をクリックします。`vEthernel (WSL)` アダプターを見つけ、右クリックして `Properties` を選択します。
`Configure` をクリックし、`Advanced` タブを開きます。各プロパティを検索し、`Large Send Offload Version 2 (IPv4)` および `Large Send Offload Version 2 (IPv6)` を見つけるまで調べてください。これらのプロパティは *無効* にしてください。

194
docs_ja/import.md Normal file
View File

@ -0,0 +1,194 @@
# Import a model
このガイドでは、GGUF、PyTorch、またはSafetensorsモデルのインポート手順について説明します。
## インポートGGUF
### ステップ1`Modelfile`を作成します
`Modelfile`を作成して始めましょう。このファイルは、モデルの設計図であり、重み、パラメータ、プロンプトテンプレートなどが指定されています。
```
FROM ./mistral-7b-v0.1.Q4_0.gguf
```
(オプション)多くのチャットモデルは、正しく回答するためにプロンプトテンプレートが必要です。`Modelfile`内の`TEMPLATE`指示でデフォルトのプロンプトテンプレートを指定できます:
```
FROM ./q4_0.bin
TEMPLATE "[INST] {{ .Prompt }} [/INST]"
```
### ステップ2Ollamaモデルを作成します。
最後に、あなたの `Modelfile` からモデルを作成してください:
```
ollama create example -f Modelfile
```
### ステップ3モデルを実行します。
次に、`ollama run`でモデルをテストします。
```
ollama run example "あなたのお気に入りの調味料は何ですか?"
```
## インポートPyTorchSafetensors
### サポートされているモデル
Ollamaは一連のモデルアーキテクチャをサポートしており、今後もサポートが拡充される予定です:
- Llama & Mistral
- Falcon & RW
- BigCode
モデルのアーキテクチャを確認するには、HuggingFaceリポジトリ内の`config.json`ファイルをチェックしてください。`architectures`のエントリーの下に(例:`LlamaForCausalLM`)が表示されるはずです。
### Step 1: HuggingFaceリポジトリをクローンするオプション
もしモデルが現在HuggingFaceリポジトリにホストされている場合、まずそのリポジトリをクローンして生のモデルをダウンロードしてください。
```
git lfs install
git clone https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.1
cd Mistral-7B-Instruct-v0.1
```
### Step 2: `.bin` ファイルに変換および量子化オプション、PyTorchおよびSafetensors用
もしモデルがPyTorchやSafetensors形式の場合、[Dockerイメージ](https://hub.docker.com/r/ollama/quantize)が利用可能で、モデルを変換および量子化するための必要なツールが含まれています。
まず、[Docker](https://www.docker.com/get-started/)をインストールしてください。
次に、モデルを変換および量子化するために、以下を実行してください:
```
docker run --rm -v .:/model ollama/quantize -q q4_0 /model
```
これにより、ディレクトリに2つのファイルが出力されます
- `f16.bin`: GGUFに変換されたモデル
- `q4_0.bin`: 4ビットの量子化に変換されたモデルOllamaはこのファイルを使用してOllamaモデルを作成します
### Step 3: `Modelfile`の作成
次に、あなたのモデルに対する`Modelfile`を作成してください:
```
FROM ./q4_0.bin
```
(オプション)多くのチャットモデルは、正しく回答するためにはプロンプトのテンプレートが必要です。`Modelfile`内の`TEMPLATE`指示でデフォルトのプロンプトテンプレートを指定できます:
```
FROM ./q4_0.bin
TEMPLATE "[INST] {{ .Prompt }} [/INST]"
```
### Step 4: Ollamaモデルを作成します
最後に、`Modelfile` からモデルを作成します:
```
ollama create example -f Modelfile
```
### Step 5: モデルを実行する
次に、`ollama run` コマンドを使ってモデルをテストします:
```
ollama run example "What is your favourite condiment?"
```
## モデルの公開 (オプション アーリーアルファ段階)
モデルの公開はアーリーアルファ段階にあります。他の人と共有するためにモデルを公開したい場合は、以下の手順に従ってください:
1. [アカウント](https://ollama.ai/signup)を作成してください。
2. `cat ~/.ollama/id_ed25519.pub` を実行して、Ollamaの公開鍵を表示します。これをクリップボードにコピーします。
3. あなたの公開鍵を[Ollamaのアカウント](https://ollama.ai/settings/keys)に追加します。
次に、モデルをあなたのユーザー名の名前空間にコピーしてください:
```
ollama cp example <your username>/example
```
その後、モデルをプッシュしてください:
```
ollama push <your username>/example
```
公開後、あなたのモデルは `https://ollama.ai/<あなたのユーザー名>/example` で利用可能になります。
## 量子化リファレンス
量子化オプションは以下の通りです最高から最も低い量子化レベルまで。注意Falconなど一部のアーキテクチャはK quantsをサポートしていません。
- `q2_K`
- `q3_K`
- `q3_K_S`
- `q3_K_M`
- `q3_K_L`
- `q4_0` (推奨)
- `q4_1`
- `q4_K`
- `q4_K_S`
- `q4_K_M`
- `q5_0`
- `q5_1`
- `q5_K`
- `q5_K_S`
- `q5_K_M`
- `q6_K`
- `q8_0`
- `f16`
## モデルの手動変換と量子化
### 事前に必要
まず、`llama.cpp` レポジトリを別のディレクトリにマシンにクローンしてください:
```
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
```
次に、Pythonの依存関係をインストールしてください:
```
pip install -r requirements.txt
```
最後に、`quantize` ツールをビルドしてください:
```
make quantize
```
### モデルを変換する
あなたのモデルのアーキテクチャに対応した変換スクリプトを実行してください:
```shell
# LlamaForCausalLM または MistralForCausalLM
python convert.py <path to model directory>
# FalconForCausalLM
python convert-falcon-hf-to-gguf.py <path to model directory>
# GPTBigCodeForCausalLM
python convert-starcoder-hf-to-gguf.py <path to model directory>
```
### モデルを量子化する
```
quantize <path to model dir>/ggml-model-f32.bin <path to model dir>/q4_0.bin q4_0
```

117
docs_ja/linux.md Normal file
View File

@ -0,0 +1,117 @@
# Linux上のOllama
## インストール
Ollamaをインストールするには、次のワンライナーを実行してください:
>
```bash
curl https://ollama.ai/install.sh | sh
```
## 手動インストール
### `ollama` バイナリをダウンロードしてください
Ollamaは自己完結型のバイナリとして配布されています。以下の手順で、ダウンロードしてPATHに含まれるディレクトリに保存してください。
```bash
sudo curl -L https://ollama.ai/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama
```
### Ollamaを起動時サービスに追加する推奨
Ollama用のユーザーを作成してください:
```bash
sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
```
`/etc/systemd/system/ollama.service`にサービスファイルを作成してください:
```ini
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
[Install]
WantedBy=default.target
```
次に、サービスを起動してください:
```bash
sudo systemctl daemon-reload
sudo systemctl enable ollama
```
### CUDAドライバのインストールオプション - Nvidia GPU用
[CUDAをダウンロードしてインストール](https://developer.nvidia.com/cuda-downloads)してください。
ドライバーがインストールされているか確認するために、以下のコマンドを実行してください。これにより、GPUに関する詳細が表示されるはずです:
```bash
nvidia-smi
```
### Ollamaを開始
`systemd`を使用してOllamaを起動します。
```bash
sudo systemctl start ollama
```
## アップデート
再びインストールスクリプトを実行して、Ollamaをアップデートします:
```bash
curl https://ollama.ai/install.sh | sh
```
または、Ollamaのバイナリをダウンロードすることもできます:
```bash
sudo curl -L https://ollama.ai/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama
```
## ログの表示
Ollamaが起動サービスとして実行されている際のログを表示するには、次のコマンドを実行してください:
```bash
journalctl -u ollama
```
## アンインストール
Ollamaサービスを削除するには:
```bash
sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
```
Ollama バイナリを bin ディレクトリから削除してください(`/usr/local/bin``/usr/bin`、または `/bin` のいずれか):
```bash
sudo rm $(which ollama)
```
ダウンロードしたモデルとOllamaサービスのユーザーおよびグループを削除してください
```bash
sudo rm -r /usr/share/ollama
sudo userdel ollama
sudo groupdel ollama
```

229
docs_ja/modelfile.md Normal file
View File

@ -0,0 +1,229 @@
# Ollama Model File
> 注意: `Modelfile` の構文は開発中です
モデルファイルは、Ollamaでモデルを作成し共有するための設計図です。
## 目次
- [フォーマット](#フォーマット)
- [](#例)
- [手順](#手順)
- [FROM (必須)](#from-必須)
- [llama2 からビルド](#llama2-からビルド)
- [バイナリ ファイルからビルド](#バイナリ-ファイルからビルド)
- [パラメータ](#パラメータ)
- [有効なパラメータと値](#有効なパラメータと値)
- [テンプレート](#テンプレート)
- [テンプレート変数](#テンプレート変数)
- [システム](#システム)
- [アダプタ](#アダプタ)
- [ライセンス](#ライセンス)
- [メッセージ](#メッセージ)
- [ノート](#ノート)
## フォーマット
`Modelfile`のフォーマット:
```modelfile
# comment
指示 引数
```
| 指示 | 説明 |
| ----------------------------------- | -------------------------------------------------------------- |
| [`FROM`](#from-必須) (required) | ベースとするモデルを定義します。 |
| [`PARAMETER`](#パラメータ) | Ollamaがモデルを実行する方法のパラメータを設定します。 |
| [`TEMPLATE`](#テンプレート) | モデルに送信される完全なプロンプトテンプレート。 |
| [`SYSTEM`](#システム) | テンプレートに設定されるシステムメッセージを指定します。 |
| [`ADAPTER`](#アダプタ) | モデルに適用する(Q)LoRAアダプタを定義します。 |
| [`LICENSE`](#ライセンス) | 法的なライセンスを指定します。 |
| [`MESSAGE`](#メッセージ) | メッセージの履歴を指定します。 |
## 例
### Basic `Modelfile`
`Modelfile` でマリオのブループリントを作成する例:
```modelfile
FROM llama2
# 温度を1に設定します [高いほど創造的、低いほど一貫性があります]
PARAMETER temperature 1
# コンテキストウィンドウサイズを4096に設定します。これは、LLMが次のトークンを生成するためのコンテキストとして使用できるトークンの数を制御します。
PARAMETER num_ctx 4096
# チャットアシスタントの挙動を指定するためのカスタムシステムメッセージを設定します。
SYSTEM You are Mario from super mario bros, acting as an assistant.
```
To use this:
1. それをファイル(例: `Modelfile`)として保存してください。
2. `ollama create choose-a-model-name -f <ファイルの場所、例: ./Modelfile>'`
3. `ollama run choose-a-model-name`
4. モデルの使用を開始してください!
より多くの例は [examplesディレクトリ](../examples) にあります。
### `Modelfile`s in [ollama.ai/library][1]
[ollama.ai/library][1] で提供されているモデルのベースとなっている `Modelfile` を見る方法は2つあります。
- オプション1モデルのタグページから詳細ページを表示
1. 特定のモデルのタグページに移動しますhttps://ollama.ai/library/llama2/tags
2. タグをクリックしますhttps://ollama.ai/library/llama2:13b
3. "Layers" までスクロールします
- 注意:[`FROM` 指示](#from-必須)が存在しない場合、
それはモデルがローカルファイルから作成されたことを意味します。
- オプション2`ollama show`を使用して、次のようにローカルモデルの`Modelfile`を表示します:
```bash
> ollama show --modelfile llama2:13b
# "ollama show" によって生成された Modelfile
# 新しい Modelfile をこのものを基に作成するには、FROM行を次のように置き換えます
# FROM llama2:13b
FROM /root/.ollama/models/blobs/sha256:123abc
TEMPLATE """[INST] {{ if and .First .System }}<<SYS>>{{ .System }}<</SYS>>
{{ end }}{{ .Prompt }} [/INST] """
SYSTEM """"""
PARAMETER stop [INST]
PARAMETER stop [/INST]
PARAMETER stop <<SYS>>
PARAMETER stop <</SYS>>
```
## 手順
### FROM (必須)
`FROM` 指示は、モデルを作成する際に使用する基本モデルを定義します。
```modelfile
FROM <model name>:<tag>
```
#### llama2 からビルド
```modelfile
FROM llama2
```
利用可能なベースモデルの一覧:
<https://github.com/jmorganca/ollama#model-library>
#### `バイナリ` ファイルからビルド
```modelfile
FROM ./ollama-model.bin
```
この bin ファイルの場所は、絶対パスまたは `Modelfile` の場所からの相対パスとして指定する必要があります。
### パラメータ
`PARAMETER` 命令は、モデルの実行時に設定できるパラメータを定義します。
```modelfile
PARAMETER <parameter> <parametervalue>
```
### 有効なパラメータと値
| パラメータ | 説明 | 値のタイプ | 使用例 |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | -------------------- |
| mirostat | Perplexity を制御するために Mirostat サンプリングを有効にします。デフォルト0、0 = 無効、1 = Mirostat、2 = Mirostat 2.0 | int | mirostat 0 |
| mirostat_eta | アルゴリズムが生成されたテキストのフィードバックにどれくらい速く反応するかに影響を与えます。学習率が低いと調整が遅くなり、高い学習率はアルゴリズムをより敏感にします。デフォルト0.1 | float | mirostat_eta 0.1 |
| mirostat_tau | 出力の一貫性と多様性のバランスを制御します。低い値では、より焦点を当て、一貫したテキストが生成されます。デフォルト5.0 | float | mirostat_tau 5.0 |
| num_ctx | 次のトークンを生成するために使用されるコンテキストウィンドウのサイズを設定します。デフォルト2048 | int | num_ctx 4096 |
| num_gqa | トランスフォーマーレイヤー内のGQAGrouped Quantized Attentionグループの数。一部のモデルでは必須です。例えば、llama2:70bの場合、これは8です。 | int | num_gqa 1 |
| num_gpu | GPUに送信するレイヤーの数。macOSでは、Metalサポートを有効にするためにデフォルトで1に設定され、無効にする場合は0になります。 | int | num_gpu 50 |
| num_thread | 計算中に使用するスレッドの数を設定します。デフォルトでは、Ollamaはこれを最適なパフォーマンスのために検出します。お使いのシステムが持つ物理的なCPUコアの数にこの値を設定することが推奨されています論理的なコアの数ではなく。 | int | num_thread 8 |
| repeat_last_n | モデルが繰り返しを防ぐために遡る範囲を設定します。 (デフォルト: 64、0 = 無効、-1 = num_ctx) | int | repeat_last_n 64 |
| repeat_penalty | 繰り返しをどれだけ厳しく罰するかを設定します。より高い値(例: 1.5)は、繰り返しをより強く罰しますが、より低い値(例: 0.9)は寛大になります。 (デフォルト: 1.1) | float | repeat_penalty 1.1 |
| temperature | モデルの温度。温度を上げると、モデルの回答がより創造的になります。 (デフォルト: 0.8) | float | temperature 0.7 |
| seed | 生成に使用する乱数シードを設定します。これを特定の数値に設定すると、同じプロンプトに対してモデルが同じテキストを生成します。 (デフォルト: 0) | int | seed 42 |
| stop | 停止シーケンスを設定します。このパターンが検出されると、LLMはテキスト生成を停止して返します。複数の停止パターンを設定するには、モデルファイルで複数の別々の `stop` パラメータを指定します。 | string | stop "AI assistant:" |
| tfs_z | テイルフリーサンプリング (Tail free sampling) は、出力の確率が低いトークンの影響を軽減するために使用されます。より高い値2.0は、影響をより軽減しますが、1.0の値はこの設定を無効にします。 デフォルト1 | float | tfs_z 1 |
| num_predict | テキスト生成時に予測するトークンの最大数。 デフォルト128、-1 = 無限生成、-2 = コンテキストを埋める) | int | num_predict 42 |
| top_k | ナンセンスを生成する確率を低減させます。 より高い値100はより多様な回答を提供し、より低い値10はより保守的になります。 デフォルト40 | int | top_k 40 |
| top_p | top-kと連動します。より高い値0.95はより多様なテキストを生成し、より低い値0.5)はより焦点を絞り込み、保守的なテキストを生成します。 デフォルト0.9 | float | top_p 0.9 |
### テンプレート
モデルに渡すフルプロンプトの`TEMPLATE`。システムメッセージとユーザーのプロンプトをオプションで含むことができます。これはフルカスタムプロンプトを作成するために使用され、構文はモデルに固有の場合があります。通常、特定のモデルのテンプレートは、そのモデルのreadmeで見つけることができます。
#### テンプレート変数
| 変数 | 説明 |
| ----------------- | ------------------------------------------------------------------------------------------------------------- |
| `{{ .System }}` | カスタム動作を指定するために使用されるシステムメッセージ。 |
| `{{ .Prompt }}` | 着信プロンプト。これはモデルファイルには指定されず、入力に基づいて設定されます。 |
| `{{ .Response }}` | LLMからの応答。指定されていない場合、応答はテンプレートの末尾に追加されます。 |
| `{{ .First }}` | セッションの最初の生成に特定のテンプレート情報をレンダリングするために使用されるブール値。 |
```modelfile
TEMPLATE """
{{- if .First }}
### System:
{{ .System }}
{{- end }}
### User:
{{ .Prompt }}
### Response:
"""
SYSTEM """<system message>"""
```
### システム
`SYSTEM`命令は、テンプレートで使用されるシステムメッセージを指定します。必要に応じて。
```modelfile
SYSTEM """<system message>"""
```
### アダプタ
`ADAPTER`命令は、ベースモデルに適用するLoRAアダプタを指定します。この命令の値は、Modelfileからの相対パスまたは絶対パスである必要があり、ファイルはGGMLファイル形式である必要があります。アダプタはベースモデルから調整されている必要があります。それ以外の場合、動作は未定義です。
```modelfile
ADAPTER ./ollama-lora.bin
```
### ライセンス
`LICENSE`命令は、このModelfileで使用されるモデルが共有または配布される際の法的なライセンスを指定するためのものです。
```modelfile
LICENSE """
<license text>
"""
```
### メッセージ
`MESSAGE`命令は、モデルが応答する際に使用するメッセージの履歴を指定するためのものです:
```modelfile
MESSAGE user Is Toronto in Canada?
MESSAGE assistant yes
MESSAGE user Is Sacramento in Canada?
MESSAGE assistant no
MESSAGE user Is Ontario in Canada?
MESSAGE assistant yes
```
## ノート
- the **`Modelfile` is not case sensitive**. In the examples, uppercase instructions are used to make it easier to distinguish it from arguments.
- Instructions can be in any order. In the examples, the `FROM` instruction is first to keep it easily readable.
[1]: https://ollama.ai/library

View File

@ -0,0 +1,54 @@
# 問題のトラブルシューティング方法
時々、Ollamaが期待通りに機能しないことがあります。何が起こったかを理解する最良の方法の一つは、ログを確認することです。Mac上でログを見るには、次のコマンドを実行してください:
```shell
cat ~/.ollama/logs/server.log
```
`systemd`を使用しているLinuxシステムでは、次のコマンドでログを見つけることができます:
```shell
journalctl -u ollama
```
Ollamaをコンテナで実行する場合、ログはコンテナ内のstdout/stderrに送られます:
```shell
docker logs <container-name>
```
`docker ps` を使用してコンテナ名を見つけてください)
ターミナルで`ollama serve`を手動で実行する場合、ログはそのターミナル上に表示されます。
ログの解釈に関するヘルプは[Discord](https://discord.gg/ollama)に参加してください。
## LLM ライブラリ
Ollamaには、異なるGPUとCPUベクトル機能向けにコンパイルされた複数のLLMライブラリが含まれています。Ollamaは、システムの機能に基づいて最適なものを選択しようとします。この自動検出に問題があるか、他の問題GPUのクラッシュに遭遇した場合は、特定のLLMライブラリを強制的に指定することで回避できます。`cpu_avx2`が最も優れており、次に`cpu_avx`、最も互換性があるが最も遅いのが`cpu`です。MacOSのRosettaエミュレーションは`cpu`ライブラリと動作します。
サーバーログには、次のようなメッセージが表示されます(リリースによって異なります):
```
Dynamic LLM libraries [rocm_v6 cpu cpu_avx cpu_avx2 cuda_v11 rocm_v5]
```
**実験的LLMライブラリのオーバーライド**
OLLAMA_LLM_LIBRARYを利用可能なLLMライブラリのいずれかに設定すると、自動検出をバイパスできます。たとえば、CUDAカードがあるがAVX2ベクトルサポートを持つCPU LLMライブラリを強制的に使用したい場合は、次のようにします:
```
OLLAMA_LLM_LIBRARY="cpu_avx2" ollama serve
```
あなたのCPUがどの機能を持っているかは、以下の方法で確認できます。
```
cat /proc/cpuinfo| grep flags | head -1
```
## 既知の問題
* N/A

9
docs_ja/tutorials.md Normal file
View File

@ -0,0 +1,9 @@
# チュートリアル
以下は、Ollamaを他のツールと組み合わせて興味深いアプリケーションを構築する方法のリストです。
- [JavaScriptでLangChainをOllamaと使用する方法](./tutorials/langchainjs.md)
- [PythonでLangChainをOllamaと使用する方法](./tutorials/langchainpy.md)
- [NVIDIA JetsonデバイスでOllamaを実行する方法](./tutorials/nvidia-jetson.md)
また、Ollamaのさらなる利用方法については、[examples](../examples) ディレクトリも確認してください。

View File

@ -0,0 +1,79 @@
# Running Ollama on Fly.io GPU Instances
Ollamaは、[Fly.io GPUインスタンス](https://fly.io/docs/gpus/gpu-quickstart/)上でほとんどまたはまったく設定なしで実行できます。まだGPUへのアクセス権がない場合は、[アクセスを申請](https://fly.io/gpu/)してウェイトリストに登録する必要があります。承認されると、開始手順が記載されたメールが届きます。
新しいアプリを作成するには、`fly apps create` を使用します:
```bash
fly apps create
```
次に、次のような新しいフォルダに `fly.toml` ファイルを作成してください。
```toml
app = "sparkling-violet-709"
primary_region = "ord"
vm.size = "a100-40gb" # see https://fly.io/docs/gpus/gpu-quickstart/ for more info
[build]
image = "ollama/ollama"
[http_service]
internal_port = 11434
force_https = false
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
processes = ["app"]
[mounts]
source = "models"
destination = "/root/.ollama"
initial_size = "100gb"
```
次に、アプリケーション用に [新しいプライベートIPv6アドレス](https://fly.io/docs/reference/private-networking/#flycast-private-load-balancing) を作成してください:
```bash
fly ips allocate-v6 --private
```
その後、アプリケーションをデプロイしてください:
```bash
fly deploy
```
そして最後に、新しいFly.ioマシンを使用して対話的にアクセスできます
```
fly machine run -e OLLAMA_HOST=http://your-app-name.flycast --shell ollama/ollama
```
```bash
$ ollama run openchat:7b-v3.5-fp16
>>> チョコレートチップクッキーの焼き方
チョコレートチップクッキーを焼くために、以下の手順に従ってください:
1. オーブンを375°F190°Cに予熱し、天板にはパーチメントペーパーまたはシリコン製のベーキングマットを敷きます。
2. 大きなボウルで、1カップの無塩バター室温に戻したもの、3/4カップの砂糖、3/4カップのパッキングされた黒糖を軽く混ぜ合わせ、ふんわりするまで混ぜます。
3. バターの混合物に大きな卵2個を1つずつ加え、各添加後によく混ぜます。1ティースプーンの純粋なバニラエクストラクトを加えて混ぜます。
4. 別のボウルで、2カップのオールパーパス小麦粉、1/2ティースプーンのベーキングソーダ、1/2ティースプーンの塩を混ぜます。ドライな成分を湿った成分に徐々に加え、ちょうど組み合わせるまでかき混ぜます。
5. 生地に2カップのチョコレートチップまたはチャンクを折り込みます。
6. 準備したベーキングシートに、丸くて大さじ1杯の生地を約2インチの間隔で並べます。
7. 10〜12分、または端が金褐色になるまで焼きます。中心部は少し柔らかい状態であるべきです。
8. クッキーを焼きたてのうちに、数分間ベーキングシートの上で冷ます後、ワイヤーラックに移して完全に冷やします。
自家製のチョコレートチップクッキーをお楽しみください!
```
これをこのように設定すると、使用が終わると自動的にオフになります。その後、再度アクセスすると、自動的にオンになります。これは、使用していないときにGPUインスタンスの費用を節約する素晴らしい方法です。Ollamaインスタンスに対する永続的なウェイクオンユース接続が必要な場合は、[WireGuardを使用したFlyネットワークへの接続を設定](https://fly.io/docs/reference/private-networking/#discovering-apps-through-dns-on-a-wireguard-connection)できます。その後、Ollamaインスタンスには `http://your-app-name.flycast` でアクセスできます。
以上で完了です!

View File

@ -0,0 +1,76 @@
# Using LangChain with Ollama using JavaScript
このチュートリアルでは、LangChainとOllamaを使用してJavaScriptを学び、少し新しい情報を得ることを目指します。2023年8月にマウイで発生した一連の山火事について学びます。その時点より前にトレーニングされたLLMは、トレーニングデータにそれよりも新しい情報が含まれていないため、これについて知ることはできません。したがって、[山火事に関するWikipediaの記事](https://en.wikipedia.org/wiki/2023_Hawaii_wildfires)を見つけ、その内容について質問してみましょう。
始めるために、単純な質問をモデルに尋ねるために **LangChain** を使ってみましょう。これをJavaScriptで行うためには、**LangChain** をインストールする必要があります:
さて、JavaScriptを構築し始めることができます
```javascript
import { Ollama } from "langchain/llms/ollama";
const ollama = new Ollama({
baseUrl: "http://localhost:11434",
model: "llama2",
});
const answer = await ollama.call(`why is the sky blue?`);
console.log(answer);
```
これにより、ターミナルで `ollama run llama2 "why is the sky blue"` を実行したのと同じ結果が得られます。ただし、質問を尋ねるためにウェブからドキュメントを読み込みたいです。**Cheerio**はウェブページを取り込むための優れたライブラリで、**LangChain** では **CheerioWebBaseLoader** で使用されています。そのため、**Cheerio** をインストールしてアプリのその部分を構築しましょう。
```bash
npm install cheerio
```
```javascript
import { CheerioWebBaseLoader } from "langchain/document_loaders/web/cheerio";
const loader = new CheerioWebBaseLoader("https://en.wikipedia.org/wiki/2023_Hawaii_wildfires");
const data = await loader.load();
```
それにより、ドキュメントが読み込まれます。このページは「オデュッセイア」よりは小さいですが、ほとんどのLLMのコンテキストサイズよりも大きいです。したがって、より小さな部分に分割し、質問に関連する部分だけを選択する必要があります。これにはベクトルデータストアが非常に役立ちます。この例では、**LangChain** の一部である **MemoryVectorStore** を使用します。ただし、データストアにコンテンツを取り込むためにはもう1つ必要なものがあります。テキスト内のトークンをベクトルの系列に変換する埋め込みプロセスを実行する必要があります。そしてそのために、**Tensorflow** を使用します。これにはいくつかのステップが含まれています。まず、必要な **Tensorflow** コンポーネントをインストールします。
```javascript
npm install @tensorflow/tfjs-core@3.6.0 @tensorflow/tfjs-converter@3.6.0 @tensorflow-models/universal-sentence-encoder@1.3.3 @tensorflow/tfjs-node@4.10.0
```
もしバージョン番号なしでこれらのコンポーネントをインストールすると、最新バージョンがインストールされますが、**Tensorflow** 内での競合があるため、互換性のあるバージョンをインストールする必要があります。
```javascript
import { RecursiveCharacterTextSplitter } from "langchain/text_splitter"
import { MemoryVectorStore } from "langchain/vectorstores/memory";
import "@tensorflow/tfjs-node";
import { TensorFlowEmbeddings } from "langchain/embeddings/tensorflow";
// テキストを500文字のチャンクに分割し、各チャンクを20文字ずつオーバーラップさせます。
const textSplitter = new RecursiveCharacterTextSplitter({
chunkSize: 500,
chunkOverlap: 20
});
const splitDocs = await textSplitter.splitDocuments(data);
// 次に、TensorFlowの埋め込みを使用してこれらのチャンクをデータストアに格納します。
const vectorStore = await MemoryVectorStore.fromDocuments(splitDocs, new TensorFlowEmbeddings());
```
データストアをLLMに対する質問に接続するには、**LangChain** の中心にある概念を使用する必要があります。それが「チェーン」です。チェーンは、特定のタスクを達成するために複数の活動を結びつける方法です。いくつかの種類のチェーンが利用可能ですが、このチュートリアルでは **RetrievalQAChain** を使用します。
```javascript
import { RetrievalQAChain } from "langchain/chains";
const retriever = vectorStore.asRetriever();
const chain = RetrievalQAChain.fromLLM(ollama, retriever);
const result = await chain.call({query: "ハワイの大規模災害宣言の要請はいつ承認されましたか?"});
console.log(result.text)
```
したがって、リトリーバーを作成しました。これはデータストアからクエリに一致するチャンクを返す方法です。そして、その後、リトリーバーとモデルをチェーンを介して接続します。最後に、チェーンにクエリを送信し、文書をソースとして回答を得ます。返された回答は正確で、2023年8月10日でした。
これで、**LangChain** と **Ollama** で何ができるかの簡単な紹介が完了しました。

View File

@ -0,0 +1,83 @@
# Using LangChain with Ollama in Python
さて、私たちが古典文学、例えば **ホメロス****『オデュッセイア』** を勉強していると想像しましょう。ネレウスとその家族に関する質問があるかもしれません。その情報を尋ねるために llama2 に質問すると、次のような情報が得られるかもしれません:
> 申し訳ありませんが、私は大規模な言語モデルであり、現実に存在しない個人や家族に関する情報は提供できません。ネレウスは実在の人物やキャラクターではなく、そのため家族や他の個人的な詳細はありません。混乱を招いた場合は申し訳ありません。他にお手伝いできることはありますか?
これは典型的な検閲された回答のようですが、llama2-uncensoredでもまずまずの回答が得られます:
> ネレウスはピュロスの伝説的な王であり、アルゴナウタイの一人であるネストールの父でした。彼の母は海のニンフ、クリュメネで、父は海の神ネプチューンでした。
それでは、**LangChain**をOllamaと連携させ、Pythonを使用して実際の文書、ホメロスの『オデュッセイア』に質問する方法を考えてみましょう。
まず、**Ollama**を使用して**Llama2**モデルから回答を取得できる簡単な質問をしてみましょう。まず、**LangChain**パッケージをインストールする必要があります:
`pip install langchain`
それからモデルを作成し、質問をすることができます:
```python
from langchain.llms import Ollama
ollama = Ollama(base_url='http://localhost:11434',
model="llama2")
print(ollama("なぜ空は青いのか"))
```
モデルとOllamaの基本URLを定義していることに注意してください。
さて、質問を行うためのドキュメントをロードしてみましょう。私はホメロスの『オデュッセイア』を読み込みますが、これはProject Gutenbergで見つけることができます。**LangChain**の一部である**WebBaseLoader**が必要です。また、私のマシンではこれを動作させるために**bs4**もインストールする必要がありました。したがって、`pip install bs4`を実行してください。
```python
from langchain.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://www.gutenberg.org/files/1727/1727-h/1727-h.htm")
data = loader.load()
```
このファイルはかなり大きいです。序文だけで3000トークンあります。つまり、完全なドキュメントはモデルのコンテキストに収まりません。したがって、それをより小さな部分に分割する必要があります。
```python
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter=RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(data)
```
分割はされていますが、関連する断片を見つけてからそれらをモデルに提出する必要があります。これを行うために、埋め込みを作成し、それらをベクトルデータベースに保存します。この例では、ベクトルデータベースとしてChromaDBを使用します。`pip install GPT4All chromadb` を実行してください。
```python
from langchain.embeddings import OllamaEmbeddings
from langchain.vectorstores import Chroma
oembed = OllamaEmbeddings(base_url="http://localhost:11434", model="llama2")
vectorstore = Chroma.from_documents(documents=all_splits, embedding=oembed)
```
それでは、ドキュメントから質問をしてみましょう。**ネレウスは誰で、彼の家族には誰がいますか?** ネレウスはオデュッセイアの登場人物で、答えはテキスト内にあります。
```python
question="ネレウスは誰で、ネレウスの家族には誰がいますか?"
docs = vectorstore.similarity_search(question)
len(docs)
```
これにより、検索に類似したデータのマッチング数が出力されます。
次に、質問と文書の関連部分をモデルに送信して適切な回答を得ることができるかどうかを確認することです。ただし、プロセスの2つの部分を結合しているため、これを「チェーン」と呼びます。これはチェーンを定義する必要があることを意味します
```python
from langchain.chains import RetrievalQA
qachain=RetrievalQA.from_chain_type(ollama, retriever=vectorstore.as_retriever())
qachain({"query": question})
```
このチェーンから受け取った回答は以下の通りです:
> ネレウスはホメロスの「オデュッセイア」に登場するキャラクターで、ペネロペの求婚者たちの文脈で言及されています。ネレウスはクロリスの父であり、クロリスはネレウスと結婚し、ネストル、クロミオス、ペリクリュメノス、およびペロを含む複数の子供をもうけました。また、ニーソスの息子であるアンフィノムスもペネロペの求婚者として言及されており、その優れた性格と愉快な会話で知られています。
これは完璧な回答ではありません。なぜなら、実際にはクロリスは「イアソスの息子でミューニュオン・オルコメノスの王であるアンフィオンの末娘であり、ピュロスの女王でした」。
テキスト分割のための chunk_overlap を 20 に更新して再試行しました。すると、はるかに良い回答が得られました:
> ネレウスはホメロスの叙事詩「オデュッセイア」に登場するキャラクターです。彼はイアソスの息子でミューニュオン・オルコメノスの王であるアンフィオンの末娘であるクロリスと結婚しています。ネレウスはクロリスとの間に、ネストル、クロミオス、ペリクリュメノス、およびペロを含む複数の子供がいます。
これがはるかに良い回答です。

View File

@ -0,0 +1,36 @@
# Running Ollama on NVIDIA Jetson Devices
いくつかの細かい設定で、Ollamaは[NVIDIA Jetsonデバイス](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/)でうまく動作します。以下は[JetPack 5.1.2](https://developer.nvidia.com/embedded/jetpack)でのテストが行われました。
NVIDIA Jetsonデバイスは、AIアプリケーション向けに特別に設計されたLinuxベースの組み込み型AIコンピュータです。
Jetsonにはメモリコントローラに直接接続された統合GPUがあります。このため、`nvidia-smi`コマンドは認識されず、Ollamaは「CPUのみ」モードで動作します。これは、jtopなどのモニタリングツールを使用して確認できます。
これを解決するために、Jetsonの事前インストールされたCUDAライブラリのパスを単純に`ollama serve`に渡しますtmuxセッション内で。そして、ターゲットモデルのクローンに`num_gpu`パラメータをハードコードします。
事前に必要:
- curl
- tmux
以下は手順です:
- 標準のLinuxコマンドを使用してOllamaをインストールします404エラーは無視してください`curl https://ollama.ai/install.sh | sh`
- Ollamaサービスを停止します`sudo systemctl stop ollama`
- `tmux`セッションでOllama serveを起動します。これを`ollama_jetson`というtmuxセッションとして開始し、CUDAライブラリのパスを参照します`tmux has-session -t ollama_jetson 2>/dev/null || tmux new-session -d -s ollama_jetson 'LD_LIBRARY_PATH=/usr/local/cuda/lib64 ollama serve'`
- 使用したいモデルmistralを取得します`ollama pull mistral`
- JetsonでGPUサポートを有効にするための新しいModelfileを作成します`touch ModelfileMistralJetson`
- ModelfileMistralJetsonファイルで、以下に示すようにFROMモデルとnum_gpu PARAMETERを指定します
```
FROM mistral
PARAMETER num_gpu 999
```
- Modelfileから新しいモデルを作成します`ollama create mistral-jetson -f ./ModelfileMistralJetson`
- 新しいモデルを実行します:`ollama run mistral-jetson`
jtopなどのモニタリングツールを実行すると、OllamaがJetsonの統合GPUを使用していることが確認できるはずです。
以上で完了です!