
酷睿 Ultra 平台部署本地 AI
本文最后更新于 2025-04-03,文章内容可能已经过时。
使用ollama开源平台本地部署deepseek-r1等大语言模型
安装open-webui提供对话界面
安装ipex-llm英特尔加速模块为推理加速
使用miniconda包管理
如果不想配置,可以在 Intel GPU 上直接免安装运行 Ollama:【发布时间2025-02-20,ollama版本0.5.4】
https://github.com/intel/ipex-llm/releases/tag/v2.2.0-nightly
提前更新显卡驱动:
包管理器Miniconda
Python环境管理 Miniconda:https://www.anaconda.com/download/success
安装:
勾选添加miniconda到系统环境PATH中,以及注册miniconda作为默认Python解释器
使用:
要使用conda虚拟环境,需要使用Anaconda Prompt运行命令,而不是cmd或powershell
所有与python项目相关的指令都应该在Anaconda Prompt环境中执行
(可选)Python自动卸载依赖
安装pip-autoremove,自动卸载没有被依赖的包:
因原作者很久没有维护,可能出现ModuleNotFoundError问题,因此使用其fork版本 :
pip install git+https://github.com/imba-tjd/pip-autoremove
(推荐)或者:pip install python3-pip-autoremove
用法:
pip-autoremove [需要卸载的包名]
(推荐)pip3-autoremove [需要卸载的包名]
Conda和pip换源
清华镜像站关于anaconda的换源指引:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
关于Pypi的换源指引:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
Conda常用指令
查看帮助:conda -h
创建环境:conda create -n [环境名] python=[指定新环境使用的python版本]
进入环境:conda activate [环境名]
退出环境:conda deactivate
卸载环境:conda remove -n [环境名] --all
一、管理conda:
(1)检查conda版本:conda --version
(2)获取版本号:conda --version或 conda -V
(3)列出所有的环境:conda env list
conda list命令用于查看conda下的包,而conda env list命令可以用来查看conda创建的所有虚拟环境。
(4)查看环境管理的全部命令帮助:conda env -h
(5)conda升级:我们可以在命令行中或者anaconda prompt中执行命令进行操作。
conda update conda升级conda
conda update anaconda升级anaconda前要先升级conda
conda update --all升级所有包
(6)conda升级后释放空间(在升级完成之后,我们可以使用命令来清理一些无用的包以释放一些空间)
conda clean -p删除没有用的包
conda clean -t删除保存下来的压缩文件(.tar)
二、管理环境
(1)创建环境
conda create -n env-name [list of package]
-n env-name是设置新建环境的名字,list of package是可选项,选择要为该环境安装的包。
如果我们没有指定安装 python 的版本,conda 会安装我们最初安装 conda 时所装的那个版本的 python
若创建特定python版本的包环境,需键入 conda create -n env-name python=3.6
(2)激活环境
Linux,OS X:source activate env-name
Windows:activate env-name
小技巧:
新的开发环境会被默认安装在你 conda 目录下的 envs 文件目录下。你可以指定一个其他的路径;
(3)切换到 base 环境
如果要从你当前工作环境的路径切换到系统根目录时,键入:
Linux,OS X:conda source deactivate
Windows:conda deactivate
(4)复制一个环境
通过克隆来复制一个环境。这儿将通过克隆snowfllakes来创建一个称为flowers的副本。
conda create -n flowers --clone snowflakes
(5)删除一个环境
如果你不想要这个名为 flowers 的环境,就按照如下方法移除该环境:conda env remove -n flowers
(6)查看环境
列出所有环境
conda env list
三、管理包
(1)安装包 或 安装特定版本的包
conda install package-name
conda install package-name==version
(2)查看所有已安装包
conda list
(3)卸载包
conda remove package-name
(4)更新包
更新一个包:conda update package-name
更新所有包:conda update --all
(5)搜索包
conda search search-term,可以模糊搜索
四、把环境添加到jupyter notebook
首先通过activate进入想要添加的环境中,然后安装ipykernel,接下来就可以进行添加了。
pip install ipykernel
python -m ipykernel install --name Python36Python36可以取与环境名不一样的名字,但方便起见建议统一
(1)查看已添加到jupyter notebook的kernel
我们可以使用jupyter kernelspec list来查看已添加到jupyter notebook的kernel。
显示如下:
PS C:\Users\25387> jupyter kernelspec list
Available kernels:
python3 D:\Anaconda\anaconda\share\jupyter\kernels\python3
(2)删除指定的kernel
若想删除某个指定的kernel,可以使用命令jupyter kernelspec remove kernel_name来完成。
由于python是不向后兼容的,分开环境可以避免语法版本不一引起的错误,同时这也可以避免工具包安装与调用的混乱。
Conda环境的导出与打包
https://blog.csdn.net/dream_of_grass/article/details/138957930
打包conda环境的两种方法:conda env export和Conda-Pack
搭建项目环境可能是整个开发过程中最让人头疼的部分了。如何把我们辛辛苦苦搭建的环境打包起来,万一环境崩了还能迅速恢复,或者让别人能轻松地复制同样的设置呢?
使用 conda env export 导出环境
Conda 允许用户通过简单的命令导出整个环境到一个 YAML 文件,这样可以在另一台机器上重新创建相同的环境。
YAML 是一种数据序列化格式,以易读性和简洁性为特点,常用于配置文件和数据交换。它支持多种数据结构,如列表和字典。
步骤如下:
导出环境:
conda env export > environment.yml 这个命令会捕获所有依赖包及其精确的版本号。
在新机器上创建环境:conda env create -f environment.yml这会根据 YAML 文件中列出的依赖关系创建环境。
优点:
简单直接:只需几个命令即可复制完整环境。
精确控制:精确到每个包的版本,保证环境一致。
缺点:
依赖网络:重新创建环境需要下载所有依赖,这可能在网络受限的情况下成为问题。
使用 Conda-Pack 打包环境
Conda-Pack 是一个用于打包已存在的 Conda 环境的工具,使其可以在没有网络连接的情况下迁移到任何系统。
步骤如下:
打包环境:conda pack -n myenv -o myenv.tar.gz
解压并激活环境:
mkdir -p ~/environments/myenv
tar -xzf myenv.tar.gz -C ~/environments/myenv
source ~/environments/myenv/bin/activate
优点:
不需要网络:一旦打包,就不需要网络来安装包。
适合离线使用:非常适合在离线或受限制的环境中部署。
封装性:打包的环境是自包含的,包括了所有二进制文件和库,这意味着不需要解决运行时依赖问题。
一致性保障:打包后的环境与原环境完全一致,不会受到目标系统上已安装包的影响。
缺点:
不处理可编辑模式安装包:如果环境中包含以可编辑模式安装的包,Conda-Pack 不能处理。例如,如果你遇到像 CondaPackError: Cannot pack an environment with editable packages installed 这样的错误,你需要先卸载可编辑包,打包,然后重新安装这些包。
操作系统限制:打包的环境在操作系统间的兼容性不如纯粹的环境文件灵活,因为包含的二进制文件可能与不同的操作系统架构不兼容。
处理可编辑模式包的情况:
当尝试使用 conda pack 打包含有可编辑安装包的环境时,你可能会遇到错误。例如,尝试卸载 pip uninstall -e /path/to/package 时,正确的命令应该是 pip uninstall package_name。正确的步骤是:
查找并卸载可编辑模式的包。
使用 conda pack 打包环境。
必要时重新安装可编辑模式的包。
总结
conda env export 会导出一个包含所有安装包信息的文件。这个文件详细记录了环境中的包及其版本,便于后续根据这些记录重新创建完全相同的环境。
而 conda-pack 则是将整个环境封装成一个压缩包。解压这个压缩包后,可以快速复制原始环境,无需再次安装每个包。
Ipex-llm加速ollama运行推理(GPU加速)
Ipex-llm的官方文档:https://github.com/intel/ipex-llm/blob/main/README.zh-CN.md
在 Intel GPU 上使用 IPEX-LLM 运行 Ollama:
https://github.com/intel/ipex-llm/blob/main/docs/mddocs/Quickstart/ollama_quickstart.zh-CN.md
安装ipex-llm的C++版本
conda create -n llm-cpp python=3.11
conda activate llm-cpp
pip install --pre --upgrade ipex-llm[cpp]
安装ollama
官网上下载Windows版本安装即可
初始化ollama
在环境中输入init-ollama.bat
运行ollama服务
set OLLAMA_NUM_GPU=999
set no_proxy=localhost,127.0.0.1
set ZES_ENABLE_SYSMAN=1
set SYCL_CACHE_PERSISTENT=1
rem under most circumstances, the following environment variable may improve performance, but sometimes this may also cause performance degradation
set SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS=1
ollama serve
Ollama的环境变量与常用设置
https://zhuanlan.zhihu.com/p/23824503091
注意:环境变量每次启动都要重新set,除非在Windows的系统属性中手动添加。
使用bat一键运行ollama
@echo off
call "C:\Users\19621\miniconda3\Scripts\activate.bat" llm-cpp
ollama serve
安装open-webui可视化chat
官网:https://github.com/open-webui/open-webui
步骤:
conda activate llm-cpp
pip install open-webui
open-webui serve
尝试使用ipex-llm加速NPU运行llm
Ipex-llm的官方指引:https://github.com/intel/ipex-llm/blob/main/docs/mddocs/Quickstart/npu_quickstart.md
[2025-02-24]尝试失败,在安装好环境运行python glm.py --repo-id-or-model-path "THUDM/glm-edge-1.5b-chat" --save-directory <converted_model_path>时,出现多个问题,首先是transformers包版本落后的问题,更新后解决,最后的报错是:
filenotfounderror: Could not find module 'C:\Users\19621\miniconda3\envs\llm-npu\Lib\site-packages\bigdl-core-npu\npu_llm.dll' (or one of its dependencies). Try using the full path with constructor syntax
说明ipex-llm官方都还没有完全认真投入开发NPU对llm的适配。NPU运行llm的尝试到此为止。
尝试部署OpenVINO在NPU上运行llm
官方指引:https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/README_cn.md
https://docs.openvino.ai/2025/get-started/install-openvino.html
环境部署
1、下载并安装Git工具:https://git-scm.com/downloads/win
(1) 安装指引:https://blog.csdn.net/weixin_42242910/article/details/136297201
2、更新NPU驱动:
3、在conda虚拟环境中部署OpenVINO gen AI
(1) 官方指引:(建议创建conda虚拟环境部署)
https://docs.openvino.ai/2025/_static/download/GenAI_Quick_Start_Guide.pdf
4、下载hugging face(建议使用国内的model scope)模型以供量化
(1) OpenVINO GenAI支持的模型列表:
https://github.com/openvinotoolkit/openvino.genai/blob/master/SUPPORTED_MODELS.md
(2) modelscope download --model [下载model scope上的模型到当前路径]
5、量化和压缩
(1) optimum-cli export openvino -m [原始模型名称] --task text-generation-with-past --weight-format int4 --sym --ratio 1.0 --group-size -1 [量化后的模型路径及名称]
(2) 运行脚本成功调用NPU
import openvino_genai as ov_genai
pipe = ov_genai.LLMPipeline(model_path, "NPU")
print(pipe.generate("The Sun is yellow because", max_new_tokens=100))
试用心得
部署很难度一般,但错误百出,文档稀烂,东拼西凑才能完成部署,同样的内容在文档各处都有,同样的操作在文档不同地方也是不同的,OpenVINO对GenAI完全没有任何优化,输出完成就直接清除内存
只适合开发者,不适合个人本地部署LLM
自建搜索引擎SearxNG
内容:
尝试在本地而非docker部署SearxNG
Github官方:https://github.com/searxng/searxng
官方文档:https://docs.searxng.org/
安装步骤:
Docker Compose安装方法弃用,因为无法解决Dify添加Searxng搜索时的403问题
1、下载源码:https://github.com/searxng/searxng-docker,解压,移动到合适的目录
2、修改.yaml文件端口映射: - "127.0.0.1:8080:8080"改成了- "8080:8080"。这样可以使用允许任意ip访问。
3、修改searxng文件夹下settings.yml中的secret_key,否则无法启动容器
4、进入cmd,执行docker-compose up -d
5、启动容器后使用8080端口访问并配置搜索引擎
Docker run安装方法:
1、在合适的目录下创建一个文件夹以保存SearXNG配置
2、运行命令:docker run --rm -d -p 8080:8080 -v C:\Users\19621\软件库\searxng:/etc/searxng searxng/searxng
这里的C:\Users\19621\软件库\searxng为用于保存配置的文件夹
3、运行后文件夹内生成settings.yml文件,打开修改 formats 属性,添加 - json 项,解决 Dify 中的 403 问题
# formats: [html, csv, json, rss]
formats:
- html
- json
4、重启SearXNG容器
Dify的部署(比Open-webui更加商业化的UI)
官网地址:https://dify.ai/zh
安装步骤:
1、 安装Docker Desktop
(1) 官网下载并安装:https://www.docker.com/
(2) 更新WSL
2、 使用Docker Compose部署Dify:https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose
(1) 下载Dify源码,解压保存到某一文件夹:https://github.com/langgenius/dify/releases
(2) .env文件中修改代码如下:(用以避免跟SearXNG搜索引擎冲突)
① EXPOSE_NGINX_PORT=8888
② EXPOSE_NGINX_SSL_PORT=9443
(3) 按照官方文档部署Dify:https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose
3、 集成ollama:https://docs.dify.ai/zh-hans/development/models-integration/ollama
(1) 需要设置环境变量OLLAMA_HOST为0.0.0.0:11434
(2) Dify里面的模型名称不能写错,地址需要填写本机在局域网的地址,不能写回环地址
4、 进入工具栏授权SearXNG搜索引擎
(1) https://docs.dify.ai/guides/tools/tool-configuration/searxng