DeepSeek本地部署

DeepSeek可以在網(wǎng)頁端使用,但是有些時候可能不是很穩(wěn)定,除了網(wǎng)頁端,也能通過本地部署來使用贾虽。

一、Ollama本地安裝Deepseek R1 模型

Ollama官網(wǎng):https://ollama.com/吼鱼,打開官網(wǎng)蓬豁,然后點擊下載,之后安裝到本地菇肃。但默認從github下載比較慢地粪,可以用這個github加速: https://ghfast.top/
打開網(wǎng)頁并輸入如下下載鏈接:https://github.com/ollama/ollama/releases/latest/download/OllamaSetup.exe

然后點擊下載按鈕,之后安裝exe文件到本地琐谤,Ollama的大模型默認下到C盤蟆技,對空間占用比較大確保C盤空間夠大。
如何更改斗忌?見后面附錄描述质礼。

安裝界面

官方建議:應該至少有 8 GB 可用 RAM 來運行 7 B 型號,16 GB 來運行 13 B 型號织阳,32 GB 來運行 33 B 型號眶蕉。

然后打開Ollama 的模型列表,搜索到DeepSeek R1唧躲,
https://ollama.com/library/deepseek-r1

像我們普通的電腦安裝1.5B造挽、7B就可以使用,然后在【右上角的的代碼】復制在命令行中運行弄痹。


輸入【ollama list】饭入,就可以查看安裝的模型。

ollama run deepseek-r1:1.5b啟動模型肛真,run后面的參數(shù)是上圖的模型名稱谐丢。第一次運行會下載相關的鏡像文件。


安裝需要一段時間蚓让,我們等一下就可以等success庇谆,就代表安裝成功。

第二次運行無需下載過程凭疮,直接進入命令行交互頁面饭耳。

測試一下問答效果:


API方式調(diào)用DeepSeek:
curl http://localhost:11434/api/generate -d "{\"model\":\"deepseek-r1:1.5b\", \"prompt\":\"介紹一下大模型在2025年有哪些亮點?\", \"stream\": false}"

接口請求支持 stream 模式执解,上邊這個請求響應 10s 左右寞肖,如果使用 stream 模式,體驗會更好衰腌。
curl http://localhost:11434/api/generate -d "{\"model\":\"deepseek-r1:1.5b\", \"prompt\":\"介紹一下大模型在2025年有哪些亮點新蟆?\", \"stream\": true}"

二、其他命令

ollama serve Start ollama
運行之后右蕊,訪問 localhost:11434琼稻,查看Ollama是否正常運行:

ollama show deepseek-r1:1.5b Show information for a model

ollama ps List running models

ollama stop Stop a running model

三、Ollama運行本地模型

Ollama 通常支持 GGUF 等格式的模型饶囚,而 .pt 文件一般是 PyTorch 保存的模型文件帕翻,不能直接被 Ollama 使用鸠补。若要使用 Ollama 與本地 .pt 模型進行交互,需要將 .pt 模型轉換為 Ollama 支持的格式嘀掸。

    import torch

    # 加載 .pt 模型
    try:
        # 設置 weights_only=True 來加載模型權重
        model_pt = torch.load('GuoPT.pt', weights_only=True)
    except Exception as e:
        print(f"加載模型時出現(xiàn)錯誤: {e}")

    # 這里需要根據(jù)具體模型架構和 GGUF 格式要求進行處理
    # 例如紫岩,提取模型的權重、偏置等參數(shù)睬塌,并按照 GGUF 格式進行存儲
    # 由于 GGUF 格式較為復雜泉蝌,具體實現(xiàn)需要參考相關文檔和規(guī)范

    # 保存轉換后的模型
    # 這里只是示例,實際保存為 GGUF 格式需要更詳細的處理
    torch.save(model_pt, 'converted_model.gguf')

得到轉換后的模型文件揩晴。


3.1 將轉換后的模型添加到 Ollama

轉換完成后勋陪,將轉換后的 GGUF 模型添加到 Ollama 中。在終端中輸入以下命令啟動 Ollama 服務:

ollama serve

創(chuàng)建Modelfile文件:
在你的工作目錄中創(chuàng)建一個名為Modelfile的文本文件(擴展名可以省略)硫兰。在文件中寫入一句話诅愚,指定GGUF模型文件的路徑。例如:FROM ./path/to/your-model.gguf瞄崇。
創(chuàng)建Ollama模型:打開終端或命令行界面呻粹,運行以下命令來創(chuàng)建Ollama模型:
ollama create my_llama_model -f Modelfile
其中,my_llama_model是你為模型指定的名稱苏研,-f選項后面跟的是Modelfile文件的路徑等浊。

檢查模型是否創(chuàng)建成功:運行以下命令來檢查Ollama中是否已包含你創(chuàng)建的模型:
ollama list
你應該能在列表中看到你的模型名稱。
運行模型:一旦模型創(chuàng)建成功摹蘑,你就可以使用以下命令來運行它:
ollama run my_llama_model
此時筹燕,Ollama將加載你指定的GGUF模型文件,并運行該模型衅鹿。

3.2 使用 Ollama 與模型進行交互
3.2.1 命令行交互

添加模型成功后撒踪,在終端中使用 ollama run 命令與模型進行交互:

ollama run my_converted_model

輸入問題后,按下回車鍵大渤,模型會生成相應的回答制妄。若要結束交互意推,按下 Ctrl + C碑韵。

3.2.2 API 交互

也可以通過 API 的方式與模型進行交互誊垢,以下是一個 Python 示例:

import requests

url = "http://localhost:11434/api/generate"
data = {
    "model": "my_converted_model",
    "prompt": "請介紹一下人工智能",
    "stream": False
}

response = requests.post(url, json=data)
if response.status_code == 200:
    result = response.json()
    print(result["response"])
else:
    print(f"請求失敗鬓椭,狀態(tài)碼: {response.status_code}")
3.2.3 Web頁面交互

Ollama有個開源的WebUI,但是需要安裝Node.js吹由、Docker等川抡。索性自己寫了一個輕量級的前端頁面與DeepSeek R1交互(實質是與Ollama的API進行交互沸伏,API的入?yún)⒅付P兔Q)较曼。
如果頁面直接請求http://localhost:11434/api/generate會有跨域問題磷斧,后端會拒絕頁面請求。由于我們無法修改Ollama的代碼,結合上面我們通過Python代碼調(diào)用正常弛饭,我們用Python寫個代理服務器冕末,讓頁面請求代理(下述代碼執(zhí)行了CORS(app) # 允許所有來源的跨域請求),代理再請求后端API孩哑。

使用 Flask 包裝 Ollama 的 API栓霜,代理服務器文件名:OllamaProxy.py翠桦,具體代碼:

from flask import Flask, request, jsonify
from flask_cors import CORS
import requests

app = Flask(__name__)
CORS(app)  # 允許所有來源的跨域請求

@app.route('/api/generate', methods=['POST'])
def generate():
    data = request.get_json()
    url = "http://localhost:11434/api/generate"
    response = requests.post(url, json=data)
    if response.status_code == 200:
        result = response.json()
        return jsonify(result)
    else:
        return jsonify({"error": f"請求失敗横蜒,狀態(tài)碼: {response.status_code}"}), response.status_code

if __name__ == '__main__':
    app.run(host='localhost', port=5000)  # 可以選擇不同的端口

啟動代理服務器:python OllamaProxy.py

成功啟動后的代理服務

JS代碼:

// 獲取 DOM 元素
const chatContainer = document.getElementById('chat-container');
const userInput = document.getElementById('user-input');
const sendButton = document.getElementById('send-button');

// 發(fā)送消息的函數(shù)
function sendMessage() {
    const message = userInput.value.trim();
    if (message === '') return;

    // 顯示用戶輸入的消息
    displayMessage(message, 'user');

    // 清空輸入框
    userInput.value = '';

    // 構建請求數(shù)據(jù)
    const data = {
        model: "deepseek-r1:7b",
        prompt: message,
        stream: false
    };

    // 發(fā)送 POST 請求到后端 API
    fetch("http://localhost:5000/api/generate", {
        method: 'POST',
        // mode: 'no-cors',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    })
      .then(response => {
            if (!response.ok) {
                throw new Error(`請求失敗销凑,狀態(tài)碼: ${response.statusCode}`);
            }
            return response.json();
        })
      .then(result => {
            // 顯示大模型的響應消息
            displayMessage(result.response, 'bot');
        })
      .catch(error => {
            // 顯示錯誤消息
            displayMessage(error.message, 'bot');
        });
}

// 顯示消息的函數(shù)
function displayMessage(message, sender) {
    const messageElement = document.createElement('div');
    messageElement.classList.add(`${sender}-message`);
    messageElement.textContent = message;
    chatContainer.appendChild(messageElement);
    // 滾動到最新消息
    chatContainer.scrollTop = chatContainer.scrollHeight;
}

// 為發(fā)送按鈕添加點擊事件監(jiān)聽器
sendButton.addEventListener('click', sendMessage);

// 為輸入框添加按鍵事件監(jiān)聽器丛晌,當按下回車鍵時發(fā)送消息
userInput.addEventListener('keydown', function (event) {
    if (event.key === 'Enter') {
        sendMessage();
    }
});

Html代碼:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>大模型交互界面</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            display: flex;
            flex-direction: column;
            align-items: center;
            padding: 20px;
        }

        #chat-container {
            width: 400px;
            border: 1px solid #ccc;
            border-radius: 5px;
            padding: 10px;
            margin-bottom: 20px;
            max-height: 400px;
            overflow-y: auto;
        }

        #input-container {
            display: flex;
            width: 400px;
        }

        #user-input {
            flex: 1;
            padding: 10px;
            border: 1px solid #ccc;
            border-radius: 5px 0 0 5px;
        }

        #send-button {
            padding: 10px 20px;
            background-color: #007BFF;
            color: white;
            border: none;
            border-radius: 0 5px 5px 0;
            cursor: pointer;
        }

        #send-button:hover {
            background-color: #0056b3;
        }

        .user-message {
            background-color: #e0f7fa;
            padding: 8px;
            margin: 5px 0;
            border-radius: 5px;
            text-align: right;
        }

        .bot-message {
            background-color: #f1f8e9;
            padding: 8px;
            margin: 5px 0;
            border-radius: 5px;
            text-align: left;
        }
    </style>
</head>

<body>
    <div id="chat-container">
        <!-- 聊天消息將顯示在這里 -->
    </div>
    <div id="input-container">
        <input type="text" id="user-input" placeholder="輸入你的問題">
        <button id="send-button">發(fā)送</button>
    </div>
    <script src="script.js"></script>
</body>

</html>

js和html文件在同一目錄,結構如下:



使用瀏覽器打開本地的index.html頁面進行交互斗幼。


四澎蛛、附錄

在 Ollama 中,你可以通過設置環(huán)境變量來修改模型的下載位置蜕窿。以下是詳細的步驟和示例:

步驟

  1. 關閉正在運行的 Ollama 服務:在修改模型下載位置之前谋逻,需要先確保 Ollama 服務沒有在運行,避免出現(xiàn)沖突桐经。

  2. 設置環(huán)境變量:通過設置 OLLAMA_MODELS 環(huán)境變量來指定模型的下載位置毁兆。不同的操作系統(tǒng)設置環(huán)境變量的方法有所不同,下面分別介紹阴挣。

在 Linux 或 macOS 系統(tǒng)上

你可以通過以下幾種方式設置環(huán)境變量:

臨時設置(當前終端會話有效)
打開終端气堕,輸入以下命令,將 /new/path/to/models 替換為你想要的模型存儲路徑:

export OLLAMA_MODELS=/new/path/to/models

然后啟動 Ollama 服務:

ollama serve

在這個終端會話中畔咧,Ollama 會將模型下載到你指定的新路徑茎芭。

永久設置
如果你希望每次啟動系統(tǒng)時都自動設置該環(huán)境變量,可以將設置命令添加到 shell 的配置文件中誓沸。例如梅桩,對于大多數(shù) Linux 用戶和 macOS 用戶,如果你使用的是 Bash shell拜隧,可以編輯 ~/.bashrc 文件宿百;如果你使用的是 Zsh shell,可以編輯 ~/.zshrc 文件虹蓄。

echo 'export OLLAMA_MODELS=/new/path/to/models' >> ~/.bashrc  # 對于 Bash
# 或者
echo 'export OLLAMA_MODELS=/new/path/to/models' >> ~/.zshrc  # 對于 Zsh

然后使配置文件生效:

source ~/.bashrc  # 對于 Bash
# 或者
source ~/.zshrc  # 對于 Zsh

最后啟動 Ollama 服務:

ollama serve

在 Windows 系統(tǒng)上

臨時設置(當前命令提示符會話有效)
打開命令提示符犀呼,輸入以下命令,將 C:\new\path\to\models 替換為你想要的模型存儲路徑:

set OLLAMA_MODELS=C:\new\path\to\models

然后啟動 Ollama 服務:

ollama serve

永久設置
你可以通過系統(tǒng)的環(huán)境變量設置界面來永久設置 OLLAMA_MODELS 環(huán)境變量薇组。步驟如下:

  1. 右鍵點擊“此電腦”外臂,選擇“屬性”。
  2. 點擊“高級系統(tǒng)設置”律胀。
  3. 在“系統(tǒng)屬性”窗口中宋光,點擊“環(huán)境變量”按鈕貌矿。
  4. 在“系統(tǒng)變量”部分,點擊“新建”罪佳。
  5. 在“變量名”輸入框中輸入 OLLAMA_MODELS逛漫,在“變量值”輸入框中輸入你想要的模型存儲路徑,例如 C:\new\path\to\models赘艳。
  6. 點擊“確定”保存設置酌毡。
  7. 重新打開命令提示符,啟動 Ollama 服務:
ollama serve
  1. 下載模型:設置好環(huán)境變量并啟動 Ollama 服務后蕾管,當你使用 ollama pull 命令下載模型時枷踏,模型將被下載到你指定的新位置。例如:
ollama pull llama2

通過以上步驟掰曾,你就可以成功修改 Ollama 下載模型的位置旭蠕。


下載后的模型在新的D盤目錄下
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市旷坦,隨后出現(xiàn)的幾起案子掏熬,更是在濱河造成了極大的恐慌,老刑警劉巖秒梅,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旗芬,死亡現(xiàn)場離奇詭異,居然都是意外死亡番电,警方通過查閱死者的電腦和手機岗屏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漱办,“玉大人这刷,你說我怎么就攤上這事∶渚” “怎么了暇屋?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長洞辣。 經(jīng)常有香客問我咐刨,道長,這世上最難降的妖魔是什么扬霜? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任定鸟,我火速辦了婚禮,結果婚禮上著瓶,老公的妹妹穿的比我還像新娘联予。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布沸久。 她就那樣靜靜地躺著季眷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卷胯。 梳的紋絲不亂的頭發(fā)上子刮,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天,我揣著相機與錄音窑睁,去河邊找鬼挺峡。 笑死,一個胖子當著我的面吹牛卵慰,可吹牛的內(nèi)容都是我干的沙郭。 我是一名探鬼主播佛呻,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼裳朋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吓著?” 一聲冷哼從身側響起鲤嫡,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绑莺,沒想到半個月后暖眼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡纺裁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年诫肠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欺缘。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡栋豫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谚殊,到底是詐尸還是另有隱情丧鸯,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布嫩絮,位于F島的核電站丛肢,受9級特大地震影響,放射性物質發(fā)生泄漏剿干。R本人自食惡果不足惜蜂怎,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望置尔。 院中可真熱鬧杠步,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至试躏,卻和暖如春猪勇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颠蕴。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工泣刹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人犀被。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓椅您,卻偏偏與公主長得像,于是被迫代替她去往敵國和親寡键。 傳聞我的和親對象是個殘疾皇子掀泳,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容