Ollama:本地大語言模型部署和使用詳解

1.什么是Ollama?

Ollama是一個開源的大語言模型管理工具,具有以下特點:

  • 簡單易用:提供簡單的命令行接口
  • 本地部署:模型運行在本地,保護數據隱私
  • 跨平臺支持:支持Windows、macOS、Linux
  • 豐富的模型庫:支持多種主流大語言模型
  • Docker支持:可以容器化部署

2. Linux 本地部署Ollama

(1)環境準備

在開始部署之前,先檢查一下系統環境:

# 檢查系統信息
cat /etc/os-release
uname -m# 檢查硬件資源(很重要!)
free -h          # 查看內存
df -h            # 查看磁盤空間
lscpu            # 查看CPU信息# 如果有GPU,檢查CUDA支持
nvidia-smi       # NVIDIA GPU
rocminfo         # AMD GPU(如果適用)

(2)快速安裝

在 Linux 上安裝 Ollama 非常便捷,官方提供了一鍵安裝腳本。這個腳本會自動檢測您的系統環境(如 Ubuntu, CentOS 等),并自動下載并安裝 Ollama。

# 最簡單的安裝方式(適用于大多數Linux發行版)
curl -fsSL https://ollama.ai/install.sh | sh# 安裝完成后驗證
ollama --version

驗證時,如果看到類似 ollama version is 0.x.x 的輸出,說明安裝成功。

離線下載

curl -fsSL https://ollama.com/install.sh -o install.sh

也可以直接瀏覽器訪問https://ollama.com/install.sh,將腳本拷貝到文件install.sh中,再使用

sh install.sh命令安裝。

3.docker鏡像方式部署Ollama

ollama官方提供了鏡像,可以直接啟動容器使用,docker安裝教程可參考docker安裝和使用

(1)下載鏡像:

docker pull ollama/ollama

(2)啟動容器:

# 運行容器
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama# GPU加速運行容器
docker run -d --gpus=all -v ollama/.ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

(3)進入容器啟動模型:

docker exec -it ollama bashollama run deepseek-r1:1.5b

(4)多卡運行

ollama默認使用單卡進行部署,使用多卡推理需要設置環境變OLLAMA_SCHED_SPREAD=1,對于docker容器部署的ollama,直接在啟動命令里添加環境變量即可,對于Linux啟動的ollama,可手動更改環境變量,更改方法可參考Linux設置環境教程

docker run -d --gpus=all -e OLLAMA_SCHED_SPREAD=1 -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

4.Ollama的基本使用

(1)啟動服務

ollama serve

(2)模型管理

下載模型

查看已下載模型

# 列出所有模型
ollama list# 查看模型詳情
ollama show deepseek-r1:1.5b

刪除模型

# 刪除指定模型
ollama rm deepseek-r1:1.5b

(3)模型下載

ollama pull <model_name># 例如
ollama pull deepseek-r1:1.5b

需要下載的模型,可去官網Ollama上去查看,點擊左上角的Models,點擊需要下載的模型

復制模型名稱

(4)模型運行

命令行交互

# 啟動模型交互
ollama run deepseek-r1:1.5b# 帶參數運行
ollama run deepseek-r1:1.5b "你好,介紹一下你自己"

API調用

# 使用curl調用API
curl http://localhost:11434/api/generate -d '{"model": "deepseek-r1:1.5b","prompt": "你好世界","stream": false
}'

(5)Python集成

安裝依賴

pip install ollama

基本使用示例

import ollama# 簡單對話
response = ollama.chat(model='deepseek-r1:1.5b', messages=[{'role': 'user','content': '你好,介紹一下Python',},
])
print(response['message']['content'])# 流式輸出
response = ollama.generate(model='deepseek-r1:1.5b',prompt='寫一首關于春天的詩',stream=True,
)for chunk in response:print(chunk['response'], end='', flush=True)

高級應用

import ollama
import jsonclass OllamaClient:def __init__(self, model='deepseek-r1:1.5b'):self.model = modeldef chat(self, messages):"""聊天對話"""response = ollama.chat(model=self.model, messages=messages)return response['message']['content']def generate(self, prompt, **kwargs):"""文本生成"""response = ollama.generate(model=self.model, prompt=prompt, **kwargs)return response['response']def embed(self, text):"""文本嵌入"""response = ollama.embeddings(model=self.model, prompt=text)return response['embedding']# 使用示例
client = OllamaClient('deepseek-r1:1.5b')
result = client.chat([{'role': 'user', 'content': '什么是人工智能?'}
])
print(result)

5. Ollama 后臺部署方式

Ollama 服務 (ollama serve) 通常在安裝后會自動作為系統服務啟動并后臺運行,但了解手動管理方式也很重要。

(1)默認后臺運行

安裝完成后,Ollama 服務通常已經啟動。您可以使用以下命令檢查其狀態:

# 對于使用 systemd 的系統 (如 Ubuntu, CentOS)
sudo systemctl status ollama

(2)使用 nohup 手動后臺啟動(不推薦長期使用)

如果您需要手動啟動 ollama serve 并讓它在終端關閉后繼續運行,可以使用 nohup

nohup ollama serve > ollama.log 2>&1 &

這會將服務在后臺啟動,并將輸出日志保存到 ollama.log 文件中。

6. Ollama 同時運行多個模型

Ollama 的現代版本(如 0.2 及以上)支持同時加載和運行多個不同的模型,以及處理單個模型的并發請求。

(1)配置環境變量

要啟用多模型并行,需要在啟動 ollama serve 時設置以下環境變量:

  • OLLAMA_MAX_LOADED_MODELS:設置可以同時加載到內存中的模型最大數量。
  • OLLAMA_NUM_PARALLEL:設置單個模型可以同時處理的請求數量。

?更改環境變量方法可參考Linux設置環境教程

(2)示例配置(Docker 方式)

以下命令啟動一個 Docker 容器,并配置它可以同時加載最多 2 個模型,每個模型可以并行處理 3 個請求:

docker run -d \-v ollama:/root/.ollama \-p 11434:11434 \-e OLLAMA_MAX_LOADED_MODELS=2 \-e OLLAMA_NUM_PARALLEL=3 \--name ollama \ollama/ollama

注意: 同時運行多個模型會顯著增加內存(RAM)消耗。請確保您的系統有足夠的資源。

(3)運行多個模型

配置好環境變量并啟動服務后,就可以像平常一樣運行不同的模型,Ollama 會根據配置和系統資源自動管理模型的加載和卸載。

7. Ollama 的管理命令

Ollama 提供了豐富的命令行接口 (CLI) 來方便地管理模型和服務。

常用管理命令列表

  • ollama serve:啟動 Ollama 服務(通常后臺自動運行)。
  • ollama pull <model_name>:從 Ollama 庫下載指定模型。
  • ollama run <model_name>:運行指定模型,可以進行交互式對話。
  • ollama ls:列出本地已安裝的所有模型。
  • ollama ps:查看當前正在運行的模型。
  • ollama show <model_name>:顯示模型的詳細信息。
  • ollama cp <source_model> <destination_model>:復制模型。
  • ollama rm <model_name>:刪除本地指定模型。
  • ollama create <model_name> -f <Modelfile>:使用 Modelfile 創建自定義模型。

下載模型:

    ollama pull deepseek-r1:1.5b

    列出模型:

    ollama ls

    注:ollama listollama ls?是完全相同的命令

    運行模型(交互式):

    ollama run deepseek-r1:1.5b
    # 進入交互模式后,可以輸入問題,例如:
    # >>> 你好,deepseek!
    # <<< 你好!很高興見到你!有什么我可以幫你的嗎?
    # 使用 /bye 或 Ctrl+C 退出交互模式

    查看運行中的模型:

    ollama ps

    顯示模型信息:

    ollama show deepseek-r1:1.5b

    刪除模型:

    ollama rm deepseek-r1:1.5b

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/pingmian/95245.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95245.shtml
    英文地址,請注明出處:http://en.pswp.cn/pingmian/95245.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    云計算學習100天-第41天 -普羅米修斯2

    目錄 五、添加被監控端 1、在web1[192.168.88.100]上部署node exporter 2、在Prometheus服務器上添加監控節點 3、瀏覽器查看添加結果 六、Grafana的部署 概述 部署步驟 七、監控MySQL數據庫 1、配置MySQL 2、配置mysql exporter 3、配置prometheus監控mysql 五、添…

    集成電路學習:什么是SVM支持向量機

    SVM:支持向量機 SVM,即支持向量機(Support Vector Machine),是一種常用的機器學習算法,特別適用于分類和回歸問題。以下是對SVM的詳細解析: 一、SVM的基本原理 SVM的基本思想是在特征空間中尋找一個最優的超平面,使得不同類別的樣本能夠被最大化地分開。這個最優…

    盲盒抽谷機小程序開發:如何用3D技術重構沉浸式體驗?

    在盲盒經濟中&#xff0c;“沉浸感”是提升用戶停留時長與轉化率的核心武器。某品牌通過3D扭蛋機旋轉、卡牌翻轉特效&#xff0c;使用戶停留時長從15秒延長至45秒&#xff0c;轉化率提升25%&#xff1b;另一品牌上線AR試戴功能后&#xff0c;單次抽谷時長延長至2分鐘&#xff0…

    集采與反腐雙重壓力下,醫藥銷售的破局之道:從資源依賴到價值重構

    在醫藥行業進入集采常態化與反腐縱深推進的新階段&#xff0c;“資源匱乏”“拜訪受阻” 成為縈繞在眾多醫藥銷售人員心頭的難題。當傳統的資金投入、學術活動等資源型打法逐漸失效&#xff0c;行業正面臨一場從 “資源驅動” 到 “價值驅動” 的深刻變革。那些曾在市場中創造過…

    Elasticsearch常用命令(未完)

    網上針對es常用命令好多都是寫的感覺非常復雜難以理解&#xff0c;所以我還是自己整理了一下相關的常用命令。 對es輸入指令可以用很多種方法比如用es的谷歌瀏覽器插件&#xff0c;亦或者postman&#xff0c;我個人比較喜歡用postman比較簡單直接 1.刪除指定索引下的所有數據…

    【系統架構設計(七)】 需求工程之:面向對象需求分析方法:統一建模語言(UML)(下)

    文章目錄一、用例圖1. 用例模型建立的系統化流程第一步&#xff1a;識別參與者第二步&#xff1a;合并需求獲得用例第三步&#xff1a;細化用例描述第四步&#xff1a;調整用例模型&#xff08;可選步驟&#xff09;2. 用例之間的關系類型二、類圖與對象圖概念類之間的關系三、…

    數據結構——樹(04二叉樹,二叉搜索樹專項,代碼練習)

    文章目錄一、概念二、構造1.1先序序列 構造BST1.2中序序列 轉換為BST1.3中序序列鏈表轉換為BST1.4BST轉換為中序序列鏈表1.7BST的序列化和反序列化1.6BST的種數二、BST的增刪改查2.1驗證是否為BST2.2查找值為val的節點2.3插入一個值為val的節點2.4刪除一個值為val的節點2.5恢復…

    ArkUI核心功能組件使用

    1.Tabs&#xff08;選項卡&#xff09; 1.1 概述 Tabs組件的頁面組成包含兩個部分&#xff0c;分別是TabContent和TabBar。TabContent是內容頁&#xff0c;TabBar是導航頁簽欄。 TabBar是導航頁簽欄&#xff0c;頁面結構如下圖所示&#xff0c;根據不同的導航類型&#xff0c;布…

    Qt5 多媒體大綱

    一、入門準備 基礎知識 熟悉 Qt 的信號槽機制、事件循環 掌握 .pro 工程文件配置&#xff08;QT multimedia multimediawidgets&#xff09; 熟悉常見的音視頻格式與編解碼器基礎 環境配置 Qt Creator Qt 5.x 確認安裝了 multimedia 模塊與 mediaservice 插件 熟悉調試…

    音頻數據集采樣率選擇建議

    你好&#xff01;這是一個非常棒且非常重要的問題&#xff0c;在音頻機器學習項目中&#xff0c;選擇合適的采樣率是平衡計算效率和模型性能的關鍵。 直接回答你的問題&#xff1a;將音頻下采樣到 800 Hz 對于絕大多數音頻分類任務來說都太低了&#xff0c;幾乎肯定會丟失大量關…

    深度學習系列 | Seq2Seq端到端翻譯模型

    一、通俗總結Seq2Seq 就像一個 “序列轉換器”&#xff1a;先把輸入的一段話 “壓縮成一個核心意思”&#xff0c;再根據這個意思 “一句句生成另一段話”&#xff0c;能搞定翻譯、聽寫這類 “輸入輸出不一樣長” 的任務&#xff0c;但太長的內容可能記不全&#xff0c;還容易越…

    Spring MVC BOOT 中體現的設計模式

    Spring:創建型:單例模式:Bean默認就是單例的&#xff0c;是餓漢模式的&#xff0c;但是可以通過Lazy設置為懶漢工廠模式&#xff1a;可自定義FactroyBean&#xff0c;實現Bean自己的生產工廠結構型:代理模式&#xff1a;AOP就是典型的動態代理&#xff0c;有jdk和cglib兩種實現…

    Chrome瀏覽器調用ActiveX控件之allWebOffice在線編輯控件

    背景 allWebOffice控件能夠實現在瀏覽器窗口中在線操作文檔的應用&#xff08;閱讀、編輯、保存等&#xff09;&#xff0c;支持編輯文檔時保留修改痕跡&#xff0c;支持書簽位置內容動態填充&#xff0c;支持公文套紅&#xff0c;支持文檔保護控制等諸多辦公功能&#xff0c;本…

    嵌入式 - 硬件:51單片機

    本節重點1. MCU、CPU、GPU、NPU、SOC、MPU、FPU2. 內存、外存的區別3. RAM和ROM的區別&#xff0c;單片機RAM大小4. 三大總線及其特點5. 發光二極管分類及其特點6. 數碼管顯示原理一、嵌入式以應用為中心&#xff0c;以計算機技術為基礎&#xff0c;軟硬件可裁剪的專用計算機系…

    Java Spring Boot 中 Redis 緩存穿透問題排查與解決方案

    前言 作為一名普通的 Java 程序開發者&#xff0c;日常開發中難免會遇到一些看似簡單但實際排查起來非常棘手的問題。在最近的一個項目中&#xff0c;我遇到了一個 Redis 緩存穿透的問題&#xff0c;導致系統在高并發下性能急劇下降&#xff0c;甚至出現服務響應超時的情況。這…

    Ubuntu下配置并遠程連接MySQL

    1、安裝mysql-serverapt update apt install mysql-server2、修改配置文件/etc/mysql/mysql.conf.d/mysqld.cnfbind-address 0.0.0.0 mysqlx-bind-address 0.0.0.03、啟動并設置服務為開機自啟動systemctl enable mysql.service --now4、查看服務狀態systemct…

    開源 C++ QT Widget 開發(九)圖表--儀表盤

    文章的目的為了記錄使用C 進行QT Widget 開發學習的經歷。臨時學習&#xff0c;完成app的開發。開發流程和要點有些記憶模糊&#xff0c;趕緊記錄&#xff0c;防止忘記。 相關鏈接&#xff1a; 開源 C QT Widget 開發&#xff08;一&#xff09;工程文件結構-CSDN博客 開源…

    怎么為服務器設置或重置服務器密碼?

    創建服務器后&#xff0c;您可以設置服務器的登錄密碼&#xff0c;如果你忘記了密碼&#xff0c;可以重新設置實例的密碼。本文講一下如何重置阿里云服務器密碼。使用限制&#xff1a;離線重置密碼僅支持在控制臺設置或重置服務器管理員賬號的密碼。?Windows 實例的默認用戶名…

    【線性代數入門 | 那忘算8】洛谷P3389 高斯消元(內附行列式教學)

    想了想還是單開了一篇&#xff0c;數學王子值得&#xff01; 專欄指路&#xff1a;《再來一遍一定記住的算法&#xff08;那些你可能忘記了的算法&#xff09;》 前置知識&#xff1a; 矩陣&#xff1a;數的集合&#xff0c;一般是方程的系數。 題面&#xff1a; 洛谷P3389 …

    GEM5學習(3):如何快速創建一個組件

    通過一個圖并行計算的測試用例&#xff0c;來學習如何快速構建一個目標組件 其核心思想是通過繼承現有組件再拓展自定義參數 創建腳本 如何創建腳本&#xff0c;具體還可以看官方說明&#xff1a;gem5: Adding cache to configuration script mkdir configs/tutorial/part1/…