welcom ! Handel home

顯示具有 AI 標籤的文章。 顯示所有文章
顯示具有 AI 標籤的文章。 顯示所有文章

2025年4月10日 星期四

無人機(Unmanned Aerial Vehicle,UAV)

無人機(Unmanned Aerial Vehicle,UAV),也稱為無人航空載具,是一種不需要人類駕駛員在機上控制的飛行器。它們可以透過遙控、導引或自動駕駛來飛行。以下是關於無人機的一些基本說明:

主要類型:

  • 多旋翼無人機:
    • 這類無人機具有多個旋翼(通常為四個或更多),使其能夠垂直起降和懸停。
    • 它們在空中操作靈活,適合用於攝影、測繪和檢查等應用。
  • 固定翼無人機:
    • 這類無人機具有固定的機翼,類似於傳統飛機。
    • 它們能夠飛行更長的距離和更高的速度,適合用於長距離監測和運輸。
  • 單旋翼無人機:
    • 這類無人機類似單旋翼直升機,有較高的載重能力,和較長的飛行時間。
    • 通常應用於專業領域。

應用領域:

  • 攝影和攝像:
    • 無人機常用於拍攝空中照片和影片,提供獨特的視角。
  • 測繪和勘測:
    • 無人機可用於創建高精度的地圖和模型,用於建築、農業和環境監測。
  • 軍事和國防:
    • 無人機可用於偵察、監視和攻擊等軍事任務。
  • 農業:
    • 無人機可用於噴灑農藥、監測作物生長和進行農田分析。
  • 救援和應急:
    • 無人機可用於搜索和救援、災後評估和運輸醫療用品。
  • 娛樂:
    • 消費型無人機,用於休閒娛樂的空拍等等。

重要組件:

  • 飛行控制器:
    • 控制無人機的飛行穩定性和導航。
  • 全球定位系統(GPS):
    • 提供無人機的定位和導航信息。
  • 慣性測量單元(IMU):
    • 測量無人機的加速度和旋轉,以保持穩定。
  • 相機和傳感器:
    • 用於拍攝照片、影片和收集其他數據。
  • 電池和動力系統:
    • 提供無人機飛行所需的動力。

注意事項:

  • 無人機的使用受到各國和地區的法律和法規的限制。
  • 飛行安全至關重要,操作員必須具備足夠的知識

2025年3月31日 星期一

ollama api upload image file python demo

 import requests

import json

import base64



# 讀取本地圖片並轉 base64

with open("demo.jpg", "rb") as image_file:

    base64_image = base64.b64encode(image_file.read()).decode('utf-8')


url = "http://192.168.5.53:11434/v1/chat/completions"

headers = {'Content-Type': 'application/json'}

data = {

    "model": "gemma3:4b",

"messages": [

        {

            "role": "user",

            "content": [

                {"type": "text", "text": "請幫我描述這張圖:"},

                {

                    "type": "image_url",

                    "image_url": {

                        "url": f"data:image/jpeg;base64,{base64_image}"

                    }

                }

            ]

        }

    ],

    "max_tokens": 1000

}


try:

    response = requests.post(url, headers=headers, data=json.dumps(data))

    response.raise_for_status()  # Raise HTTPError for bad responses (4xx or 5xx)

    print(response.json())  # Print the JSON response

except requests.exceptions.RequestException as e:

    print(f"Error: {e}")

except json.JSONDecodeError as e:

    print(f"Error decoding JSON: {e}")

    print(f"Raw response text: {response.text}")


Ubuntu 24.04 Docker and GPU drive by ollama +webui for LLM

 #=== ubuntu 24.04 安裝 Docker from ===

$sudo apt-get update

$sudo apt-get install ca-certificates curl gnupg

# Add Docker's official GPG key:

$sudo apt-get update

$sudo apt-get install ca-certificates curl

$sudo install -m 0755 -d /etc/apt/keyrings

$sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

$sudo chmod a+r /etc/apt/keyrings/docker.asc


# Add the repository to Apt sources:

echo \

  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \

  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \

  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

$sudo apt-get update

$sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

#=== test docker is working ===

$sudo docker run hello-world


#==== ubuntu 24.04 install nvidia container-toolkit ======

$curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \

  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \

    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \

 sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list


$sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list

$sudo apt-get update

$sudo apt-get install -y nvidia-container-toolkit

$sudo systemctl restart docker


#== working Direct build ===
$cd work_prj
$mkdir ollama-data
$mkdir webuidata

#=== docker startup ollama ====
$sudo docker run -d --name ollama \
  --gpus all \
  --restart always \
  -p 11434:11434 \
  -v ./ollama-data:/root/.ollama \
  -e NVIDIA_VISIBLE_DEVICES=all \
  -e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
  ollama/ollama

#=== docker startup webui for llm ===
$sudo docker run -d \
  --name open-webui \
  --restart always \
  -p 3100:8080 \
  -v ./webuidata:/app/backend/data \
  -e OLLAMA_API_BASE_URL=http://localhost:11434 \
  ghcr.io/open-webui/open-webui:main




















2025年2月15日 星期六

Meta Segment Anything Model (SAM) 簡介

 

🔍 Meta Segment Anything Model (SAM) 簡介

Meta Segment Anything Model (SAM) 是 Meta(Facebook)於 2023 年推出的一個 影像分割(Image Segmentation)模型,它能夠自動識別並分割影像中的物體。SAM 被設計為通用的影像分割工具,可以適用於各種應用,如醫學影像分析、自動駕駛、機器視覺等。


🔹 什麼是影像分割 (Segmentation)?

影像分割是一種 電腦視覺技術,它的目標是將影像中的不同區域或物體區分開來。影像分割的類型包括:

  1. 語意分割 (Semantic Segmentation):將影像中的像素分配給不同的類別(如「人」、「車」、「貓」)。
  2. 實例分割 (Instance Segmentation):區分同一類別內的不同物件(如「貓1」、「貓2」)。
  3. 全景分割 (Panoptic Segmentation):結合語意和實例分割,為每個物件提供完整的分類資訊。

SAM 支援所有這些類型,並且比傳統方法更靈活。


🔹 SAM 的核心功能

1️⃣ 任意物體分割 (Segment Anything)

SAM 可以在沒有標註的情況下,自動分割影像中的物體。只要用滑鼠點擊、框選或輸入文本提示,SAM 就能立即產生對應的分割結果。

2️⃣ 多種輸入方式

SAM 支援 三種輸入方式 來控制分割:

  • 點擊 (Points):點擊影像上的特定位置,SAM 會自動分割該物體。
  • 邊界框 (Bounding Boxes):標記出物體的範圍,SAM 會精確分割出該物體。
  • 文字提示 (Text Prompts, 結合 CLIP):在一些應用中,SAM 可以與 CLIP 搭配,透過自然語言描述來自動分割物體。

3️⃣ 高效能 & 可擴展

  • 零樣本學習 (Zero-shot Learning):SAM 不需要額外訓練,即可處理 任何影像
  • 大規模影像數據:SAM 使用了 Meta 的 SA-1B 資料集(110 億張影像) 進行訓練,是目前最大規模的影像分割數據集。
  • 即時分割:SAM 可以 毫秒級運行,支援 即時應用(如影片分割、自動駕駛)。

🔹 SAM 的技術架構

SAM 主要由以下三個部分組成:

  1. 影像編碼器(Image Encoder)
    • SAM 採用 Vision Transformer (ViT-Huge) 作為編碼器,能夠將輸入影像轉換為 高維特徵向量
    • 這個編碼器可以 一次性處理整張影像,大幅提升效率。
  2. 提示編碼器(Prompt Encoder)
    • 處理 使用者輸入(點、框、文字),然後轉換成模型可理解的格式。
  3. 遮罩解碼器(Mask Decoder)
    • 根據影像特徵和使用者提示,生成 精確的物體遮罩(Mask)

🔹 SAM 的應用領域

✅ 1. 醫學影像分析

  • SAM 可用於 自動檢測腫瘤、血管、器官,提升醫學影像處理的效率。
  • 例如:
    python
    sam.predict(image=medical_scan, point=(x, y))

✅ 2. 自動駕駛 & 智慧交通

  • SAM 可用於 即時車輛與行人檢測,提升自駕車的安全性。

✅ 3. AR/VR & 影像編輯

  • SAM 可用於 即時人物分割、背景移除、物件標記,提升影像處理能力。

✅ 4. 遠端感測 & 衛星影像分析

  • SAM 可以自動標註地形、建築物、農田、水域,用於環境監測和氣候研究。

🔹 如何使用 SAM?(Python + PyTorch)

📌 1. 安裝 Segment Anything

bash
pip install torch torchvision pip install git+https://github.com/facebookresearch/segment-anything.git pip install opencv-python matplotlib

📌 2. 下載 SAM 模型

python
import torch from segment_anything import sam_model_registry, SamPredictor import cv2 import numpy as np import matplotlib.pyplot as plt # 下載 SAM 模型(ViT-Huge) sam_checkpoint = "sam_vit_h.pth" model_type = "vit_h" sam = sam_model_registry[model_type](checkpoint=sam_checkpoint) predictor = SamPredictor(sam)

📌 3. 加載影像

python
image = cv2.imread("test_image.jpg") image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) predictor.set_image(image)

📌 4. 使用點擊進行分割

python
input_point = np.array([[500, 300]]) # 指定分割點(X, Y 座標) input_label = np.array([1]) # 1 表示正樣本(前景) masks, scores, logits = predictor.predict( point_coords=input_point, point_labels=input_label, multimask_output=True, ) # 顯示分割結果 plt.imshow(image) plt.imshow(masks[0], alpha=0.5) # 疊加遮罩 plt.show()

🔹 SAM 的優勢 vs. 傳統方法

特性SAM傳統影像分割
訓練需求不需要額外訓練需要大量標註數據
適應性支援 任意影像只能針對特定資料集
輸入方式點擊、框選、文字提示需要完整標註
計算效率高效,適用於即時應用較慢,需大量計算資源
適用場景醫學、交通、工業、AI特定應用,如 X-ray、MRI

🔹 SAM 的未來發展

  1. 進一步壓縮模型,使 SAM 能夠在 手機、邊緣設備 運行。
  2. 結合大語言模型(LLM),讓 SAM 透過文字指令自動分割影像
  3. 擴展到 3D 影像分割,應用於 醫學 CT、LiDAR

🚀 總結

Meta SAM 是一種通用影像分割模型,能夠即時識別和分割任意物體
支援點擊、框選、文字等輸入方式,適用於 醫學、自駕車、影像編輯、衛星分析
開源可用,安裝簡單,適合開發者應用於 AI 影像處理專案

現在你可以試試 SAM 來實現自動影像分割了!🚀🔍

IoT 設備對接 LLM API

 

🌐 如何讓 IoT 設備對接 LLM API

IoT 設備(如 Raspberry Pi、ESP32、Arduino)通常透過 HTTP API、MQTT 或 WebSockets 來與外部 AI 服務(如 LLM API)進行溝通。這裡我們會介紹幾種不同的方式,幫助你將 IoT 設備連接 LLM(如 Ollama、OpenAI、Llama 3)


🔹 方法 1:直接透過 HTTP 請求對接 LLM API

大多數 LLM(如 Ollama、OpenAI、GPT-4、Claude)都提供 HTTP API,IoT 設備可以使用 HTTP 客戶端(如 requestscurl)發送請求

📌 IoT 直接連接 LLM

1️⃣ 設定 IoT 環境

如果你的 IoT 設備是 Raspberry Pi,可以安裝 requests 來發送 API 請求:

bash
pip install requests

2️⃣ 直接發送 HTTP API 請求

這裡假設 Ollama API 運行在 http://192.168.1.100:11434,IoT 設備可以發送請求:

python
import requests # 設定 LLM API 端點 OLLAMA_URL = "http://192.168.1.100:11434/api/generate" # 設定請求的 payload payload = { "model": "mistral", "prompt": "請解釋 IoT 如何連接 LLM API。", "stream": False } # 發送 POST 請求 response = requests.post(OLLAMA_URL, json=payload) # 解析回應 data = response.json() print(data["response"])

適用情境

  • IoT 直接請求 本地 LLM 服務(如 Ollama、Llama.cpp
  • IoT 透過 WiFi4G LTE 連接雲端 LLM API(如 OpenAI GPT-4、Claude

🔹 方法 2:使用 MQTT 中介 IoT 和 LLM

在 IoT 領域,MQTT(Message Queuing Telemetry Transport) 是一種廣泛使用的通訊協議。如果 IoT 設備無法直接存取 API,則可以使用 MQTT Broker(如 Mosquitto) 來讓 IoT 設備與 LLM 溝通。

📌 架構

1️⃣ IoT 設備 透過 MQTT 發送請求(主題:iot/llm/request
2️⃣ 伺服器 監聽請求並呼叫 LLM API
3️⃣ LLM 回應結果 發布到 MQTT(主題:iot/llm/response
4️⃣ IoT 設備 訂閱 iot/llm/response 取得 LLM 回應


📌 伺服器端(Python + MQTT + LLM)

這個程式會監聽 iot/llm/request,然後向 Ollama API 發送請求,再將回應發送到 iot/llm/response

python
import paho.mqtt.client as mqtt import requests import json MQTT_BROKER = "mqtt.example.com" MQTT_REQUEST_TOPIC = "iot/llm/request" MQTT_RESPONSE_TOPIC = "iot/llm/response" OLLAMA_API_URL = "http://192.168.1.100:11434/api/generate" def on_message(client, userdata, message): # 接收 MQTT 訊息 request_data = json.loads(message.payload.decode()) print(f"收到 LLM 請求: {request_data}") # 發送 API 請求 response = requests.post(OLLAMA_API_URL, json={"model": "mistral", "prompt": request_data["prompt"], "stream": False}) llm_response = response.json()["response"] # 發送 LLM 回應到 MQTT client.publish(MQTT_RESPONSE_TOPIC, json.dumps({"response": llm_response})) print(f"發送 LLM 回應: {llm_response}") # 設定 MQTT Client client = mqtt.Client() client.on_message = on_message client.connect(MQTT_BROKER, 1883) client.subscribe(MQTT_REQUEST_TOPIC) print("LLM MQTT 伺服器已啟動,等待 IoT 設備請求...") client.loop_forever()

📌 IoT 設備端(ESP32 / Raspberry Pi)

這段程式碼讓 IoT 設備發送 LLM 請求,並 接收 LLM 回應

python
import paho.mqtt.client as mqtt import json MQTT_BROKER = "mqtt.example.com" MQTT_REQUEST_TOPIC = "iot/llm/request" MQTT_RESPONSE_TOPIC = "iot/llm/response" def on_message(client, userdata, message): response = json.loads(message.payload.decode()) print(f"LLM 回應: {response['response']}") # 初始化 MQTT client = mqtt.Client() client.on_message = on_message client.connect(MQTT_BROKER, 1883) # 訂閱 LLM 回應主題 client.subscribe(MQTT_RESPONSE_TOPIC) # 發送 LLM 請求 request_payload = json.dumps({"prompt": "請解釋 IoT 如何連接 LLM API。"}) client.publish(MQTT_REQUEST_TOPIC, request_payload) # 保持運行,等待回應 client.loop_forever()

適用情境

  • IoT 透過 低功耗 MQTT 連接 雲端或本地 LLM
  • 適用於 無線感測器、ESP32、Arduino 等設備
  • 適合多台 IoT 設備同時請求 LLM

🔹 方法 3:IoT 透過 WebSocket 連接 LLM

如果 IoT 設備 需要即時與 LLM 交互(如 智慧音箱、對話機器人),可以使用 WebSocket 來維持長連線。

📌 伺服器(Flask + WebSocket + LLM)

這個 Flask 伺服器會讓 IoT 透過 WebSocket 與 LLM 互動:

python
from flask import Flask from flask_socketio import SocketIO import requests app = Flask(__name__) socketio = SocketIO(app, cors_allowed_origins="*") OLLAMA_API_URL = "http://192.168.1.100:11434/api/generate" @socketio.on("llm_request") def handle_llm_request(json_data): prompt = json_data["prompt"] response = requests.post(OLLAMA_API_URL, json={"model": "mistral", "prompt": prompt, "stream": False}) result = response.json()["response"] socketio.emit("llm_response", {"response": result}) if __name__ == "__main__": socketio.run(app, host="0.0.0.0", port=5000)

📌 IoT 設備(WebSocket 客戶端)

python
import websocket import json def on_message(ws, message): response = json.loads(message) print(f"LLM 回應: {response['response']}") ws = websocket.WebSocketApp("ws://192.168.1.100:5000", on_message=on_message) ws.run_forever() # 發送請求 ws.send(json.dumps({"prompt": "IoT 連接 LLM 的方式?"}))

適用情境

  • IoT 設備需要即時回應
  • 語音助手、機器人、智慧家庭
  • 比 HTTP 更低延遲

🎯 總結

方法適用情境
HTTP API簡單、適合直接請求
MQTT低功耗、適用 IoT
WebSocket即時互動,如語音助手

不同應用場合可選擇不同方式,讓 IoT 無縫對接 LLM!🚀

2025年1月23日 星期四

如何在 Ollama 中使用模型的设置和测试方法

以下是如何在 Ollama 中使用上述模型的设置和测试方法,以及一些重要的注意事项:

Ollama 模型使用总览

Ollama 通过简单的 ollama pullollama run 命令来管理和运行模型。关键在于模型的名称需要正确。上述表格中,“模型名称”一列通常对应 Ollama 中使用的模型名称,但有时会有细微差别。

Ollama 使用步骤

  1. 安装 Ollama: 按照 Ollama 官方文档 (https://ollama.ai/) 的指引安装 Ollama。

  2. 拉取模型: 使用 ollama pull 命令下载模型。

  3. 运行模型: 使用 ollama run 命令启动模型。

  4. 与模型交互: 启动后,可以直接在终端输入文本与模型交互。

各模型在 Ollama 中的使用方法

以下针对您提供的模型列表,说明如何在 Ollama 中使用它们:

  • Llama 3.3 (70B): 目前 Ollama 库中可能还没有直接提供 Llama 3.3。通常 Ollama 会使用更常见的版本号,例如 llama2 (对应 Llama 2 系列,可能包含 70B 版本)。您需要使用 ollama pull llama2 来拉取,然后通过 ollama run llama2 运行。具体版本信息可以在拉取后通过 ollama show llama2 查看。

  • Phi-4 (14B): 同样,需要确认 Ollama 库中是否有 phi-4 的模型。如果存在,使用 ollama pull phi-4ollama run phi-4。如果没有,可能需要自行转换模型格式或寻找其他可用的 Phi 模型。

  • QwQ (32B): 这是一个实验性研究模型,Ollama 库中很可能没有直接提供。您可能需要自行构建或转换模型。

  • Llama 3.2 Vision (11B, 90B): Ollama 主要专注于文本模型。Vision 模型(处理图像的模型)通常需要不同的工具和框架。Ollama 目前可能不支持直接运行 Vision 模型。

  • Llama 3.2 (1B, 3B) 和 Llama 3.1 (8B, 70B, 405B): 这些模型通常可以通过 llama2 这个名称在 Ollama 中找到。使用 ollama pull llama2 拉取,然后用 ollama run llama2 运行。通过 ollama show llama2 可以查看具体版本和参数信息。

  • Mistral (7B, v0.3): 使用 ollama pull mistralollama run mistral。Ollama 通常会更新到最新版本,所以您拉取的可能是最新的 Mistral 版本。

  • Gemma (7B): 使用 ollama pull gemmaollama run gemma

  • Qwen (0.5B - 110B) 和 Qwen2.5 (0.5B - 72B): Ollama 支持 Qwen 系列模型。使用 ollama pull qwen(或 qwen2)拉取,然后使用 ollama run qwen(或 qwen2)运行。Ollama 可能会提供不同参数大小的版本,您可以通过 ollama show qwen 查看可用的版本。例如,要指定 7B 版本,可能需要使用 ollama pull qwen:7b,具体取决于 Ollama 库中的命名约定。

重要提示

  • 模型大小和硬件要求: 模型参数越大(例如 70B、405B),需要的显存(VRAM)就越多。运行大型模型可能需要高端的 GPU。如果显存不足,Ollama 可能会报错或运行缓慢。
  • Ollama 模型库: Ollama 的模型库不断更新。您可以使用 ollama list 命令查看当前可用的模型列表。
  • 模型名称的细微差别: 有时 Ollama 库中使用的模型名称可能与原始模型名称略有不同。请仔细查看 Ollama 库或使用 ollama show 命令来确认正确的名称。
  • 自定义模型: 如果 Ollama 库中没有您需要的模型,您可以尝试自行转换模型格式并添加到 Ollama 中。这需要一定的技术知识。
  • 测试: 运行模型后,您可以输入一些简单的提示语来测试模型是否正常工作。例如,输入 “Hello, how are you?” 或 “请写一首关于秋天的诗。”

示例:运行 Qwen 7B 模型

  1. 拉取模型:

<!-- end list -->

Bash
ollama pull qwen:7b # 注意这里可能需要指定版本号,具体看ollama list的输出
  1. 运行模型:

<!-- end list -->

Bash
ollama run qwen:7b
  1. 与模型交互:

<!-- end list -->

>>> 你好!
你好!很高兴认识你。有什么我可以帮你的吗?
>>> 请写一首关于秋天的诗。
秋风瑟瑟落叶黄,
雁字回时天渐凉。
菊残犹有傲霜枝,
枫染层林胜锦章。

希望以上信息能够帮助您在 Ollama 中使用这些大型语言模型。记住,密切关注 Ollama 的官方文档和模型库,以获取最新的信息和支持。

Ollama库中一些大型语言模型(LLM)的版本

 

以下是Ollama库中一些大型语言模型(LLM)的版本、名称、特性和容量的汇总:

模型名称 特性描述 参数容量

Llama 3.3 新的最先进70B模型,性能与Llama 3.1 405B相似。 70B

Phi-4 微软的14B参数开源模型,具有最新的技术。 14B

QwQ 实验性研究模型,专注于提升AI推理能力。 32B

Llama 3.2 Vision 包含11B和90B尺寸的指令调优图像推理生成模型。 11B, 90B

Llama 3.2 Meta的Llama 3.2,提供1B和3B的小型模型。 1B, 3B

Llama 3.1 Meta的新一代模型,提供8B、70B和405B参数选项。 8B, 70B, 405B

Mistral Mistral AI发布的7B模型,更新至0.3版本。 7B

Gemma Google DeepMind构建的一系列轻量级开源模型。 7B

Qwen 阿里云的大型语言模型系列,参数范围从0.5B到110B。 0.5B, 1.8B, 4B, 7B, 14B, 32B, 72B, 110B

Qwen2.5 在阿里巴巴最新的大规模数据集上预训练,

支持多语言和128K令牌。 0.5B, 1.5B, 3B, 7B, 14B, 32B, 72B

2025年1月22日 星期三

安裝 Ollama Lite for GPU 的 docker 安裝啟動流程

 

安裝 Ollama Lite for GPU 的 docker 安裝啟動流程

使用 Docker 安裝啟動 Ollama 並啟用 GPU 的詳細流程,包含 Ollama Lite 的概念說明:

Ollama 與 Ollama Lite 的概念

  • Ollama: Ollama 是一個用於運行大型語言模型 (LLM) 的工具,它簡化了模型的下載、管理和執行。Ollama 本身並不區分 "Lite" 版本,而是透過不同的模型檔案來達到類似 "Lite" 的效果。
  • Ollama Lite (廣義概念): 指的是使用較小、參數較少的模型,這些模型通常檔案較小、運行速度較快,但可能在某些任務上的表現不如大型模型。在 Ollama 中,您可以選擇下載不同大小的模型,例如 Llama 2 有 7B、13B、70B 等不同版本,7B 版本相對來說就是一種 "Lite" 的選擇。因此,並不存在一個官方的 "Ollama Lite" 版本,而是透過選擇較小的模型來達到輕量化的目的。

使用 Docker 安裝啟動 Ollama (包含 GPU 支援)

以下步驟假設您已安裝 Docker Desktop 或 Docker Engine,並且您的系統具備 NVIDIA GPU 以及正確安裝 NVIDIA Driver 和 NVIDIA Container Toolkit。

1. 安裝 NVIDIA Container Toolkit

這是啟用 Docker 使用 GPU 的關鍵步驟。

  • Ubuntu/Debian:
  • <!-- end list -->

    Bash:
    $curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
    $curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring..list
    $sudo nvidia-ctk runtime configure --runtime=docker
    $sudo systemctl restart docker
  • 其他 Linux 發行版或 Windows (WSL2): 請參考 NVIDIA 官方文件:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html

2. 建立 Docker Volume (可選但建議)

建立一個 Docker Volume 來持久化儲存 Ollama 的模型檔案,避免每次重啟容器都需要重新下載。

Bash:
$docker volume create ollama_models

3. 運行 Ollama Docker 容器 (GPU 支援)

使用以下指令運行 Ollama 容器,並啟用 GPU 支援:

Bash:
$docker run -d --gpus all -p 11434:11434 -v ollama_models:/root/.ollama --name ollama ollama/ollama

各參數說明:

  • -d:在後台運行容器。
  • --gpus all:允許容器使用所有可用的 GPU。
  • -p 11434:11434:將主機的 11434 端口映射到容器的 11434 端口,這是 Ollama API 的預設端口。
  • -v ollama_models:/root/.ollama:將先前建立的 ollama_models volume 掛載到容器內的 /root/.ollama 目錄,用於儲存模型檔案。
  • --name ollama:為容器命名為 ollama
  • ollama/ollama:Ollama 的 Docker 映像檔。

4. 下載模型

進入 Ollama 容器:

Bash:
$docker exec -it ollama bash

然後使用 ollama pull 指令下載模型。例如,下載 Llama 2 7B 模型 (相對 "Lite" 的選擇):

Bash:
$ollama pull llama2

或者下載其他模型,例如:

Bash:
$ollama pull mistral
$ollama pull codellama

您可以從 Ollama 的模型庫 (https://ollama.ai/library) 找到更多模型。

5. 運行模型

在 Ollama 容器內,使用 ollama run 指令運行模型:

Bash:
$ollama run llama2

現在您可以開始與模型互動。

6. 使用 Ollama API

您可以使用 curl 或其他 HTTP 客戶端與 Ollama API 互動。例如:

Bash:
$curl http://localhost:11434/api/generate -d '{ "model": "llama2", "prompt": "Hello, how are you?" }'


7. 使用 Open WebUI (可選)

如果您想要使用網頁介面與 Ollama 互動,可以參考我先前提供的 Open WebUI 安裝指南。請確保 Open WebUI 正確連接到 Ollama API (http://host.docker.internal:11434http://ollama:11434,取決於您的網路設定)。

總結

透過以上步驟,您就可以在 Docker 中安裝並使用 Ollama,並啟用 GPU 加速。透過選擇不同大小的模型,您可以根據您的需求和硬體資源選擇合適的 "Lite" 或完整版本。使用 Docker Volume 可以方便地管理模型檔案,而 Open WebUI 則提供了一個更友好的使用者介面。









Ollama 版本系列、功能特色及安裝需求

1. Ollama 版本系列

Ollama 提供多個版本,以適應不同的使用需求:

  • 穩定版 (Stable Release):適用於正式環境,提供經過測試的功能和修復。
  • 開發版 (Beta Release):包含最新功能,但可能仍在測試階段。
  • 企業版 (Enterprise Edition):針對企業用戶,提供高效能支援、API 擴展和商業應用功能。
  • Docker 版 (Docker Image):適用於容器化環境,可輕鬆部署和擴展。
  • 低運算需求版本 (Lightweight Edition):適用於資源有限的設備,如低功耗 CPU、嵌入式系統或邊緣運算環境。

2. 低運算需求版本的特性

針對低算力環境,Ollama 提供了輕量化選擇,主要包括以下版本:

  • Ollama Lite

    • 適用於 RAM 低於 8GB 的設備
    • 提供精簡模型,減少記憶體與運算資源的消耗
    • 適用於 IoT、邊緣設備、單板電腦(如 Raspberry Pi)
  • Ollama Edge

    • 針對邊緣 AI 設備進行優化
    • 支援 ARM 架構處理器,適用於低功耗運算環境
    • 可與微服務架構整合,提高運行效率
  • Ollama Mobile

    • 可運行於 Android、iOS 等行動設備
    • 利用設備的神經處理單元 (NPU) 來提升 AI 計算能力
    • 針對行動裝置優化的低功耗模式

3. 主要功能特色

Ollama 提供強大的 AI 模型處理能力,並具備以下特點:

  • 多模組支持:支援多種大型語言模型 (LLM),包括 OpenAI API 相容模型。
  • REST API 整合:可透過 REST API 與應用程式無縫整合。
  • CLI 操作:提供直觀的指令列工具,方便開發者使用。
  • GPU 加速:可利用 GPU 提升模型推理效能。
  • RAG 檢索增強生成:提升對話的準確性與資訊檢索能力。
  • 高效能佇列處理:支援多執行緒佇列機制,提高請求處理效率。
  • 輕量級模式:針對低算力設備進行優化,減少資源佔用。

4. 安裝需求

Ollama 可以運行在多種環境中,基本安裝需求如下:

(1) 硬體需求

  • 最低需求

    • CPU:Intel 或 AMD 64-bit 處理器 / ARM 架構處理器(適用於 Edge/Mobile 版)
    • RAM:4GB 以上(建議 8GB)
    • 硬碟空間:10GB 以上(依據模型大小需求)
  • 建議配置

    • CPU:多核心高效能處理器 / ARM v8 以上
    • RAM:8GB 以上
    • GPU:適用於 AI 推理的低功耗 GPU 或內建 NPU
    • 硬碟:SSD/NVMe 高速存儲

(2) 軟體需求

  • 作業系統

    • Linux(Ubuntu 20.04 以上)
    • macOS(Apple Silicon 及 Intel)
    • Windows(需使用 WSL2)
    • Android(適用於 Mobile 版)
    • 嵌入式 Linux(適用於 Edge 版)
  • 依賴環境

    • Docker(若使用容器化方式)
    • Python 3.8 以上(若需自行開發擴充功能)

5. 安裝 Ollama Lite for GPU 的 Docker 安裝啟動流程

(1) 拉取 Docker 映像檔

$docker pull ollama/ollama:latest

(2) 啟動 Docker 容器

$docker run -d --name ollama-lite-gpu \
  --runtime=nvidia \
  -p 11434:11434 \
  -e NVIDIA_VISIBLE_DEVICES=all \
  -v ollama-lite-gpu-data:/root/.ollama \
  ollama/ollama:latest

(3) 確認容器運行狀態

$docker ps -a

如果看到 ollama-lite-gpu 正在運行,表示安裝成功。

login 進入 Ollama-lite-gpu 容器 docker image

$docker exec -it ollama-lite-gpu bash

然後使用 ollama pull 指令下載模型。例如,下載 Llama 2 7B 模型 (相對 "Lite" 的選擇):

$ollama pull llama2

或者下載其他模型,例如:

$ollama pull mistral
$ollama pull codellama

您可以從 Ollama 的模型庫 (https://ollama.ai/library) 找到更多模型。

(4) 測試運行

$curl http://localhost:11434/v1/models

如果返回模型列表,則表示 Ollama Lite for GPU 成功啟動。

安裝完成後,可使用 REST API 或 CLI 進行模型運行與測試。

這樣就成功安裝並設定 Ollama Lite for GPU,準備開始使用其強大功能!

Open WebUI 使用 Docker 安裝及連接 Ollama Docker 注視設定


1. 安裝 Open WebUI

使用 Docker 安裝 Open WebUI 可以讓部署更加方便,以下是安裝步驟:

# 拉取 Open WebUI 映像檔
docker pull ghcr.io/open-webui/open-webui:latest

# 啟動 Open WebUI 容器
docker run -d --name open-webui \
  -p 3000:3000 \
  -v open-webui-data:/app/data \
  ghcr.io/open-webui/open-webui:latest

2. 安裝並運行 Ollama Docker 容器

Ollama 主要透過 CLI 運行,但也可以使用 Docker 方式運行。

# 拉取 Ollama Docker 映像檔
docker pull ollama/ollama:latest

# 啟動 Ollama 容器
docker run -d --name ollama \
  --runtime=nvidia \
  -p 11434:11434 \
  -v ollama-data:/root/.ollama \
  ollama/ollama:latest

3. 連接 Open WebUI 到 Ollama

當 Open WebUI 和 Ollama 兩個 Docker 容器都在運行後,需要讓 Open WebUI 連接到 Ollama。

方法 1:透過 Docker Network 連接

# 建立 Docker 網路
docker network create ollama-net

# 重新啟動並加入網路

# 移除已運行的 Open WebUI 和 Ollama
docker stop open-webui ollama

docker rm open-webui ollama

# 重新啟動 Ollama 並加入網路
docker run -d --name ollama \
  --network ollama-net \
  -p 11434:11434 \
  -v ollama-data:/root/.ollama \
  ollama/ollama:latest

# 重新啟動 Open WebUI 並加入網路
docker run -d --name open-webui \
  --network ollama-net \
  -p 3000:3000 \
  -v open-webui-data:/app/data \
  ghcr.io/open-webui/open-webui:latest

方法 2:設定 Open WebUI 連接本機 Ollama

如果 Open WebUI 需要連接到運行在本機端的 Ollama,可設定環境變數。

docker run -d --name open-webui \
  -p 3000:3000 \
  -e OLLAMA_BASE_URL=http://localhost:11434 \
  -v open-webui-data:/app/data \
  ghcr.io/open-webui/open-webui:latest

4. 驗證連接是否成功

  1. 開啟瀏覽器,進入 http://localhost:3000

  2. 登入 Open WebUI。

  3. 在設定中檢查是否成功連接到 http://ollama:11434http://localhost:11434

  4. 測試與模型互動,確認運行正常。

這樣就成功使用 Docker 安裝 Open WebUI 並連接 Ollama 了!

使用 Docker 安裝 Open WebUI 並連接 Ollama 的完整指南

 使用 Docker 安裝 Open WebUI 並連接 Ollama 的完整指南

Open WebUI 是一個基於網頁的圖形使用者介面 (GUI),讓您能更方便地管理和操作 Ollama 運行的大型語言模型 (LLM)。透過 Docker 安裝 Open WebUI 並連接到 Ollama,您可以輕鬆地透過網頁介面與本地部署的 LLM 模型互動。


1. 使用 Docker 安裝 Open WebUI

安裝 Open WebUI 有兩種方式:基本 Docker 指令安裝和使用 Docker Compose 安裝。


1.1 基本 Docker 指令安裝

您可以使用以下的 Docker 指令來安裝 Open WebUI:


Bash

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

各參數說明如下:


-d:在後台運行容器。

-p 3000:8080:將主機的 3000 端口映射到容器的 8080 端口,這樣您就可以透過 http://localhost:3000 在瀏覽器中訪問 Open WebUI。

--add-host=host.docker.internal:host-gateway:這是非常重要的一步,它設定讓容器可以連接到主機的服務。在 Docker 內部,host.docker.internal 會指向主機環境,這對於連接到主機上運行的 Ollama 服務至關重要。

-v open-webui:/app/backend/data:設定持久化儲存,將容器內的 /app/backend/data 目錄掛載到主機的 open-webui 卷宗。這確保了您的設定和資料在容器重新啟動或刪除後仍然保留。

--name open-webui:為容器命名為 open-webui,方便後續管理,例如停止、啟動或刪除容器。

--restart always:設定容器在失敗時自動重啟,確保服務的穩定性。

ghcr.io/open-webui/open-webui:main:指定使用 Open WebUI 的映像檔,:main 代表使用最新的主分支版本。

1.2 Docker Compose 安裝


使用 Docker Compose 可以更方便地同時部署 Ollama 和 Open WebUI。以下是一個 docker-compose.yml 檔案範例:


YAML:

version: "3.9"

services:

  ollama:

image: ollama/ollama

ports:

  - "11434:11434"

volumes:

  - ollama:/root/.ollama

deploy:

resources:

  reservations:

devices:

  - driver: nvidia # 取消註釋以使用 NVIDIA GPU

count: 1

capabilities: [gpu]

  open-webui:

image: ghcr.io/open-webui/open-webui:main

ports:

  - 3000:8080

depends_on:

  - ollama

environment:

  - OLLAMA_API_BASE_URL=http://ollama:11434 # 使用容器名稱 ollama

volumes:

  - open-webui:/app/backend/data

restart: always


volumes:

  ollama:

  open-webui:

  

使用此設定檔,您可以執行以下指令來部署:


Bash:

docker-compose up -d


此指令會建立並啟動 docker-compose.yml 檔案中定義的所有服務。


1.3 GPU 注意事項

如果您有 NVIDIA GPU,可以取消 docker-compose.yml 檔案中 ollama 服務下的 deploy 部分的註釋,以啟用 GPU 加速。如果沒有 NVIDIA GPU,請保持註釋狀態。


2. 連接 Ollama 和 Open WebUI

2.1 設定 Ollama API 連接

在 docker-compose.yml 文件中,open-webui 服務的 environment 設定了 OLLAMA_API_BASE_URL 環境變數,將 Open WebUI 連接到 Ollama 的 API。在這個範例中,我們使用 http://ollama:11434,其中 ollama 是 Ollama 服務的容器名稱,11434 是 Ollama 的預設 API 端口。


2.2 使用容器名稱或 host.docker.internal

如果 Ollama 和 Open WebUI 在同一個 Docker 網路中(例如使用 Docker Compose),建議使用容器名稱(如 ollama)來連接。如果 Ollama 部署在主機或其他伺服器上,則需要將 OLLAMA_API_BASE_URL 修改為 http://host.docker.internal:11434(在基本 Docker 指令安裝中)或伺服器的 IP 地址或域名。


2.3 啟動 Open WebUI

安裝完成後,在瀏覽器輸入 http://localhost:3000 來存取 Open WebUI。如果 Ollama 和 Open WebUI 部署在遠端伺服器,則需要將 localhost 替換為伺服器的 IP 位址或域名。


2.4 登入和設定

初次登入 Open WebUI 需要註冊帳號,第一個註冊的用戶會成為管理員。登入後,可以在設定中選擇要使用的本地模型。如果要使用其他模型供應商的 API,也可以在設定中輸入 API 金鑰。


3. 其他注意事項

Docker 版本: 如果您沒有用過 Docker,您必須先安裝 Docker Desktop 或 Docker Engine 及其 dependencies。

網路連線: 確保網路連線正常,並且沒有防火牆或代理阻止連線。

檢查日誌: 如果 Open WebUI 無法啟動,可以檢查 Docker 的日誌來除錯:docker-compose logs open-webui 或 docker logs open-webui。

更新: 使用 docker-compose pull 和 docker-compose up -d 來更新 Open WebUI 到最新版本。

Ollama API 端口: Ollama 預設的 API 端口是 11434。


Ollama 常見的 GUI 介面

 Ollama 本身是一個在終端機執行的工具,但有許多圖形使用者介面 (GUI) 可以搭配使用,讓使用者更方便地操作和與模型互動。以下整理了 Ollama 常見的 GUI 介面及其相關資訊:

1. Open WebUI (原名 Ollama WebUI)

  • 這是一個網頁介面,讓使用者可以像使用 ChatGPT 那樣與 Ollama 運行的模型對話。

  • Open WebUI 可以搭配 Ollama 或其他相容 OpenAI 的 LLM 使用。

  • 它提供了類似 ChatGPT 的聊天介面,並支援許多功能,例如:管理模型、提示詞範本、工具使用(例如:天氣查詢、Google 搜尋)、檔案上傳等等。

  • Open WebUI 是一個高度模組化的網頁介面,可以執行 AI 繪圖、辨識圖片、執行 RAG 檢索增強生成、整理 PDF 檔案內容、搜尋網頁等。

  • 可以使用 Docker 部署 Open WebUI。

2. 其他 GUI 選擇

  • 除了 Open WebUI,還有許多其他的 GUI 可以與 Ollama 整合,例如 Raycast 和 Ollamac。

  • 這些工具提供了不同的介面和功能,使用者可以根據自己的需求選擇合適的工具。

3. 如何使用 Open WebUI

  1. 安裝

    • Open WebUI 通常使用 Docker 進行部署,可參考相關教學文章使用 docker-composedocker run 指令安裝。

  2. 設定

    • 首次使用需要建立帳戶,並且可以選擇使用 Ollama 或其他模型供應商的 API。

    • 接著可以新增對話,選擇想要使用的模型。

  3. 使用

    • 在網頁介面中,可以輸入文字與模型互動,並且使用 Open WebUI 提供的各種功能。

4. 圖形介面的優點

  • 更直觀:相較於終端機指令,圖形介面更直觀易用,方便不熟悉命令列的使用者。

  • 更豐富的功能:圖形介面通常提供更多額外功能,例如歷史紀錄、模型管理、提示詞管理等。

  • 更友好的互動:類似 ChatGPT 的介面讓使用者更容易上手。

5. Ollama 本身預設是指令列操作

  • Ollama 的設計理念是預設模式很簡單,但同時也具有高度的彈性。

  • Ollama 的核心功能是透過指令列 (CLI) 來操作,例如 ollama runollama pull 等指令。

  • Ollama 提供 REST API,開發人員可以將 Ollama 整合到其他應用程式中。

6. 總結

雖然 Ollama 本身主要透過終端機操作,但透過 Open WebUI 或其他 GUI 工具,使用者可以更方便地與 Ollama 互動,並使用其提供的各種功能。這些 GUI 工具讓 Ollama 的使用更加普及,即使不熟悉指令列的使用者也能輕鬆上手。

Ollama 詳細介紹與應用

 Ollama 詳細介紹與應用

一、簡介

Ollama 是一個開源的本地大型語言模型(LLM)運行框架,旨在讓開發者和技術愛好者能更輕鬆地部署和使用各種 LLM 模型,而無需依賴雲端服務。它以簡便的操作、本地化的運行和強大的功能,在 AI 開發社群中迅速受到歡迎。正如多個來源所說,「Ollama 可以僅使用一行 command 就完成 LLM 的部署、API Service 的架設達到即開即用的成果,江湖人稱 LLM 界 Docker 的存在。」(Nero Un Chi Hin)。

二、主要特性與優點

  1. 本地運行: Ollama 的核心優勢在於其能在使用者自己的設備上運行模型,無需將數據傳輸至雲端,這大大提升了數據隱私和安全性。「Ollama 支援在自己的設備上載入模型,無需將數據上傳至雲端,確保數據隱私與安全。」(SJ)
  2. 跨平台支援: Ollama 支援 macOS、Linux 和 Windows 等主流作業系統,也提供 Docker 容器部署選項。「Ollama 支援 macOS、Linux 和 Windows 等主流操作系統」(Marconi Jiang)。
  3. 簡單易用: Ollama 的安裝和使用都非常簡單,多數操作可透過 CLI 完成,且提供 API 服務供程式呼叫。「Ollama 的操作非常簡單, 從下載 Ollama 到在 CLI (Command Line Interface) 下執行以下任何一個 ollama run llama3.2 (或其他 model)的指令, 整個步驟可以在 10 分鐘內完成。」(Marconi Jiang)
  4. 多種模型支援: Ollama 支援多種開源 LLM 模型,包括 Llama 3、Mistral、Gemma 等,使用者可以根據需求下載不同大小和功能的模型。「Ollama 是一個開源的大型語言模型平台, 允許使用者在本地端運行各種模型. 以下表格詳細列出 Ollama 可以支援的 models, 如 Llama 3 等。」(Marconi Jiang)。
  5. 客製化模型: 除了使用現有的模型,Ollama 也支援使用者自行建立模型,並可透過 Modelfile 設定模型參數和行為。「除了使用現有的模型,Ollama 也支援使用者自行建立模型」(Simon Liu)。
  6. API 服務: Ollama 提供 RESTful API 介面,讓開發者能輕鬆將 LLM 功能整合到自己的應用程式中。「提供簡單易用的 API 和工具,幫助開發者快速集成語言模型功能到他們的應用中。」(SJ)。

三、安裝與設定

  1. 安裝方式:
  • macOS: 從 GitHub Releases 下載 .dmg 檔案,解壓縮後移動到應用程式資料夾。
  • Linux: 使用 curl -fsSL https://ollama.com/install.sh | sh 命令安裝。
  • Docker: 使用 docker run 命令啟動容器,並映射 11434 端口和模型資料夾。例如使用 GPU 可以加上 --gpus=all 參數。「可以使用以下命令:docker run -d --gpus=all -v $HOME/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama」(Ollama安裝教學 - HackMD)
  1. 基本操作:
  • ollama serve:啟動 Ollama 服務。「啟動 Ollama 服務時,預設 API 服務會開啟在 http://0.0.0.0:11434」(SJ)。
  • ollama pull <model_name>:下載指定模型。「ollama pull llama3,沒有注明 size (:7b) 的話就會下載 default 那個 size」(夢想家)。
  • ollama run <model_name>:執行指定模型,進入對話模式。「ollama run gemma:2b,執行成功後會出現類似 terminal input 的樣式」(Nero Un Chi Hin)
  • ollama list:列出已下載的模型。「ollama list 列出可用的模型,概念與 Docker Image 一樣」(SJ)。
  • ollama rm <model_name>:移除指定模型。「ollama rm llama3 移除模型」(夢想家)。
  • ollama cp <model_name_1> <model_name_2>: 複製模型。「ollama cp llama3 my-model,複製模型」(夢想家)。
  • ollama show <model_name>:顯示模型資訊。「ollama show --modelfile gemma:2b,顯示模型檔案位置」(Nero Un Chi Hin)
  • ollama create <model_name> -f <Modelfile_path>:從 Modelfile 創建自訂模型。「ollama create "MyTranslator" -f ./Modelfile」(Ivon的部落格)。
  1. 模型儲存位置
  • 模型預設儲存在 ~/.ollama/models 目錄下。
  • 可透過環境變數 OLLAMA_MODELS 修改儲存路徑,如 Environment="OLLAMA_MODELS=/media/mydisk/models/" (imuslab)。

四、模型下載與使用

  1. Ollama Library: Ollama 官方網站提供了一個模型庫(https://ollama.com/library),使用者可從此處瀏覽並下載各種模型。
  • 熱門模型:Llama 3: Meta 的最新大型語言模型,有 3B, 8B, 70B 等不同參數大小的版本。「可以下載 llama3.2 模型,不指定版本的話預設是 3b 的模型」(SJ)。
  • Mistral: 由 Mistral AI 開發的開源模型,有 7B 版本。「FROM mistral:7b-instruct」 (Ivon的部落格)
  • Gemma: Google DeepMind 開發的模型,有 2B 和 7B 等版本。「ollama run gemma:2b,執行 Google Deep Mind gemma 模型」(Marconi Jiang)。
  • Phi 3: 微軟開發的小型語言模型,有 3.8B 和 14B 版本。「ollama run phi3,下載微軟出的「小」模型 phi3」(YWC 科技筆記)。
  • Code Llama: 用於程式碼生成的模型,有 7B 和 13B 等版本。「ollama pull codellama:7b,下載用於程式碼生成的模型」(夢想家)。
  1. 模型大小與記憶體需求: 運行模型需要一定的記憶體(RAM),通常 7B 模型需要 8GB RAM,13B 模型需要 16GB RAM,33B 模型需要 32GB RAM。「Note: 記憶體需求大約是如下, 要跑 7B 的模型, 需要 8GB 的 RAM. 16 GB 的 RAM 來跑 13B models, 跟 32 GB 跑 33B models.」(Marconi Jiang)。
  2. GGUF 模型
  • GGUF (GPT-Generated Unified Format) 是一種為大型語言模型設計的量化格式,能有效節省資源。「GGUF(GGML Universal Format)是由 llama.cpp 團隊開發的 GGML 的後續版本,專為大型語言模型設計的量化格式。」(hengshiousheu)
  • 可以從 HuggingFace 下載 GGUF 模型檔案。
  • 需要使用 Modelfile 將 GGUF 檔案導入 Ollama,才能在 Ollama 上運行。
  1. Modelfile 範例:FROM ./TAIDE-LX-7B-Chat.Q8_0.gguf
  2. TEMPLATE """[INST] {{ if .System }}<<SYS>>{{ .System }}<</SYS>>{{ end }}{{ .Prompt }} [/INST] """
  3. SYSTEM """你是一個來自台灣的AI助理,你的名字是 TAIDE,樂於以台灣人的立場幫助使用者,會用繁體中文回答問題"""
  • FROM 指定模型檔案位置。
  • TEMPLATE 定義 Prompt 的格式。
  • SYSTEM 設定模型的角色和行為。

五、API 介面與應用

  1. RESTful API: Ollama 提供 RESTful API,使用者可透過 curl 或其他 HTTP 客戶端與模型互動。
  • 生成文字: 使用 /api/generate 接口生成文字。例如:
  • curl http://localhost:11434/api/generate -d '{ "model": "mistral", "prompt":"Why is the sky blue?" }'
  • 對話: 使用 /api/chat 接口進行對話。例如:
  • curl http://localhost:11434/api/chat -d '{ "model": "mistral", "messages": [ { "role": "user", "content": "why is the sky blue?" } ] }'
  1. Python SDK: Ollama 提供 Python 函式庫,方便開發者在 Python 應用中整合 LLM 功能。
  • 使用 pip install ollama 安裝套件。
  • ollama.chat 可用於一來一往的對話。
  • ollama.generate 可用於單次文字生成。
  1. API 參數:
  • "model":指定要使用的模型名稱。
  • "prompt" 或 "messages":指定輸入的文字或對話訊息。
  • "stream": false:設定為 false 時,回覆將以單一 JSON 物件返回,而非串流。
  1. API 應用:
  • 本地化聊天介面: 結合 Open WebUI 等前端介面,建立本地化的聊天應用程式。「不想讓資料外洩怎麼辦:在本地用 Ollama 搭配 Open WebUI 做一個聊天界面吧!」(海狸大師)
  • RAG (檢索增強生成): 結合 LangChain 等工具,實作 RAG 應用,提升 LLM 回答的準確性和相關性。「之後有時間我們會整合 LangChain 實現 RAG 的解決方案。」(SJ)。「Ollama + RAG 安裝 pip 套件,pip3 install gradio pypdf chromadb langchain_ollama ollama pull nomic-embed-text」(Marconi Jiang)
  • 程式碼輔助: 整合 aider 等工具,輔助程式碼撰寫和註解。「看到 Linux 大神 jserv 讚嘆 aider 協助程式寫作, 以及 comment 的撰寫, 馬上來試。」(Marconi Jiang)

六、進階應用

  1. 自定義模型: 使用者可以根據自己的需求,使用 Hugging Face 的模型,並透過 GGUF 轉換和 Modelfile 設定,建立自定義的 LLM 模型。
  2. Web UI: 使用 Open WebUI 等工具,提供更方便的圖形化介面,讓使用者能輕鬆與 LLM 互動。
  3. 程式碼輔助: 整合 Aider 等程式碼輔助工具,讓 LLM 成為開發者的助手。

七、Ollama 的重要性

Ollama 作為一個開源、易用、本地化的 LLM 解決方案,在 AI 開發領域扮演著越來越重要的角色:

  • 隱私保護: 在本地運行模型,能有效保護使用者數據隱私。
  • 開發便利: 簡化 LLM 的部署和使用流程,降低技術門檻。
  • 開源生態: 促進開源 LLM 技術的發展和應用。
  • 應用廣泛: 可應用於多種場景,包括聊天機器人、RAG 應用、程式碼輔助等。

八、總結

Ollama 是一個強大且靈活的工具,使得本地運行大型語言模型變得更加簡單。它不僅適用於研究人員和開發者,也適合對 AI 有興趣的廣大使用者。透過 Ollama,我們可以探索本地 AI 開發的無限可能,並在保護隱私的前提下,充分利用 AI 的力量。

九、其他重點

  • 效能監控: 透過 API 呼叫可取得模型回覆時間、token 數量等數據,以評估系統效能。「從 Ollama API Documentation可以查到 Ollama API 的使用手冊。」(Marconi Jiang)
  • 多 GPU: Ollama 若偵測到多 GPU,會將模型載入至其中一個 GPU 中,以減少 PCI 傳輸。
  • 模型快取: 模型資料是 memory mapped 的,並會顯示在 file cache 中。
  • 模型移除: 模型快取時間(UNTIL) 到達後會從記憶體中卸載,可透過 ollama ps 觀察。可透過設定 keep_alive=-1 讓模型常駐記憶體。「 To preload a model and leave it in memory, curl $URL -d '{"model": "llama3", "keep_alive": -1}'」(夢想家)

十、參考資料

  • 各來源文章中引用的連結與相關資訊。

這份簡報文件涵蓋了您提供的所有來源中的主要主題、概念和重要事實,希望能幫助您更好地理解 Ollama。