基于 ollama 在linux 私有化部署DeepSeek-R1以及使用RESTful API的方式使用模型
由于业务需求部署的配置 deepseek:32b,linux配置GPU L20 4卡 ,SSD 200g,暂未发现有什么问题,持续观察中
##通用写法,忽略就行,与deepseek无关
import pandas as pd
from openai.embeddings_utils import get_embedding, cosine_similarity
import openai
import os
import logging as logger
from flask_cors import CORS
import os
openai.api_key = os.getenv('OPENAI_API_KEY')
class Chatbot():
def parse_paper(self, pdf):
logger.info("Parsing paper")
number_of_pages = len(pdf.pages)
logger.info(f"Total number of pages: {number_of_pages}")
paper_text = []
for i in range(number_of_pages):
page = pdf.pages[i]
page_text = []
def visitor_body(text, cm, tm, fontDict, fontSize):
x = tm[4]
y = tm[5]
# ignore header/footer
if (y > 50 and y < 720) and (len(text.strip()) > 1):
page_text.append({
'fontsize': fontSize,
'text': text.strip().replace('\x03', ''),
'x': x,
'y': y
})
_ = page.extract_text(visitor_text=visitor_body)
blob_font_size = None
blob_text = ''
processed_text = []
for t in page_text:
if t['fontsize'] == blob_font_size:
blob_text += f" {t['text']}"
if len(blob_text) >= 2000:
processed_text.append({
'fontsize': blob_font_size,
'text': blob_text,
'page': i
})
blob_font_size = None
blob_text = ''
else:
if blob_font_size is not None and len(blob_text) >= 1:
processed_text.append({
'fontsize': blob_font_size,
'text': blob_text,
'page': i
})
blob_font_size = t['fontsize']
blob_text = t['text']
paper_text += processed_text
logger.info("Done parsing paper")
return paper_text
1.安装ollama模型运行框架
deepseek-r1:32b
github地址:https://github.com/ollama/ollama
Linux下执行: curl -fsSL https://ollama.com/install.sh | sh
2.ollama相关命令
ollama 服务相关命令
sudo systemctl stop ollama
sudo systemctl status ollama
sudo systemctl start ollama
sudo systemctl restart ollama
1.拉取模型
ollama pull xxx模型
2.运行模型
ollama run xxx模型
退出聊天cmd /bye
3.移除模型
ollama rm xxx模型
4.显示模型信息
ollama show xxx模型
5.列出计算机上的模型
ollama list
6.列出当前加载的模型
ollama ps
7.停止当前正在运行的模型
ollama stop xxx模型
=====================
linux相关配置地址:https://github.com/ollama/ollama/blob/main/docs/linux.md
ollama服务默认端口 11434,修改ollama配置使其可以监听0.0.0.0和修改端口,可以外网访问
1.修改文件
vim /etc/systemd/system/ollama.service
2.增加
[Service]
Environment=“OLLAMA_HOST=0.0.0.0:xxxx”
3.重现加载
sudo systemctl daemon-reload
sudo systemctl restart ollama
sudo systemctl status ollama
4.查看日志
journalctl -u ollama.service
5.执行 ollama 命令需要带上 OLLAMA_HOST=127.0.0.1:xxxx
例如 OLLAMA_HOST=127.0.0.1:xxxx ollama ps
ollama相关模型
Model | Parameters | Size | Download |
---|---|---|---|
DeepSeek-R1 | 7B | 4.7GB | ollama run deepseek-r1 |
DeepSeek-R1 | 671B | 404GB | ollama run deepseek-r1:671b |
Llama 3.3 | 70B | 43GB | ollama run llama3.3 |
Llama 3.2 | 3B | 2.0GB | ollama run llama3.2 |
Llama 3.2 | 1B | 1.3GB | ollama run llama3.2:1b |
Llama 3.2 Vision | 11B | 7.9GB | ollama run llama3.2-vision |
Llama 3.2 Vision | 90B | 55GB | ollama run llama3.2-vision:90b |
Llama 3.1 | 8B | 4.7GB | ollama run llama3.1 |
Llama 3.1 | 405B | 231GB | ollama run llama3.1:405b |
Phi 4 | 14B | 9.1GB | ollama run phi4 |
Phi 3 Mini | 3.8B | 2.3GB | ollama run phi3 |
Gemma 2 | 2B | 1.6GB | ollama run gemma2:2b |
Gemma 2 | 9B | 5.5GB | ollama run gemma2 |
Gemma 2 | 27B | 16GB | ollama run gemma2:27b |
Mistral | 7B | 4.1GB | ollama run mistral |
Moondream 2 | 1.4B | 829MB | ollama run moondream |
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 |
LLaVA | 7B | 4.5GB | ollama run llava |
Solar | 10.7B | 6.1GB | ollama run solar |
3.ollama服务提供的api
官方文档地址:https://github.com/ollama/ollama/blob/main/docs/api.md
1.与模型聊天api,默认流式,如果不要流式 配置"stream": false
curl http://localhost:11434/api/chat -d '{
"model": "deepseek-r1:32b",
"messages": [
{ "role": "user", "content": "为什么天空是蓝色的?" }
],
"stream": false
}'