Ollama适配昇腾开源验证任务心得
由任务计划书(https://bbs.huaweicloud.com/blogs/437834#H20)了解任务内容,主要目的是将Ollama项目适配至华为的Ascend Npu(昇腾)上,确保在昇腾上正常运行,并完成模型推理任务。
1 开发过程
也即在服务器上利用ollama部署大模型,并有效完成推理任务。打开Ollama网址:GitHub - ollama/ollama: Get up and running with Llama 3.2, Mistral, Gemma 2, and other large language models.,根据README文档熟悉ollama部署大模型的操作步骤。
1.1 鲲鹏、OpenEuler:
(1)在线对话:
安装ollama: curl -fsSL https://ollama.com/install.sh | sh;
接着拉取在线模型:ollama run llama3.1;
加载后显示succes则为模型加载完成,可进行在线对话。
(2)特定角色对话:
拉取想要进行定制的模型:ollama pull llama3.1;
创建一个Modefile文件,在其中设置参数和系统消息如:
FROM llama3.1
PARAMETER temperature 1
SYSTEM """
你是一名西安交通大学数学专业大四学生,请你以这个身份回答问题。
"""
创建模型并运行:
Ollama create 985 -f ./Modelfile
Ollama run 985
即可让大模型按照指定角色回答问题。
(3)文本生成:通过python代码调用ollama库操作生成文本。
import ollama
client = ollama.Client("http://localhost:11434")
model_name = "llama3.1:8b"
prompt = "Once upon a time in a land far ,far away,"
response = client.generate(model_name,prompt)
print(gen_text)
1.2 昇腾、OpenEuler:
Ollama基于昇腾部署大模型当前仅支持在Ascend 910B3上,且需要编译安装。
(1)第一步,准备环境。使用conda命令在conda环境下安装go和gcc,go:conda install -c conda-forge go=1.23,安装gcc时一并将g++同时安装升级:conda install -c conda-forge gcc=12.2 gxx=12.2 –update-all;确保go在1.22或更高版本、GCC在11.4.0或更高版本上。
(2)第二步,克隆仓库。使用git将支持昇腾的Ollama版本拉取下来,
git clone https://github.com/zhongTao99/ollama.git
cd ollama//llm/generate
bash gen_linux.sh
如果bash运行报错,切换会ollama目录下使用go编译:
cd ../..
go generate ./...
go build .
在运行go build .时如果出现timeout报错的话,设置go代理:
go env -w GOPROXY=https://goproxy.cn,direct然后重新运行即可完成编译。完成之后会在目录下生成 ollama文件。
(3)第三步,拉取服务在线推理。
在910B服务器上开启两个页面,一个页面运行./ollama serve启动ollama在线服务,然后再另一个页面上同级目录下运行ollama推理任务。拉取模型:./ollama run qwen2.5完成加载即可开启在线对话、自定义提示,并启动服务时在所有ollama cli前面加./,即以./ollama 方式进行推理。
2 验收材料
2.1 验收说明
本文提供的验收材料按照《Ollama开源项目 For Huawei任务规划》任务计划书的要求提供,没有偏离。
2.2 验收材料
- 开源软件fork地址:不涉及
- 开源软件修改记录(可以有多个修改记录):不涉及
- 推送上游社区PR(包括代码、文档、可以有多个):不涉及
- 验证DEMO地址:https://gitcode.com/sunpeng024/Ollama/blob/main/README.md
- 验证DEMO修改记录(可以有多个修改记录,只包含和本任务验证强相关的提交记录,比如添加依赖、增加配置文件、演示开源软件功能使用的代码等):
2.3 资源清单
2.3.1 Kunpeng CPU
产品名称 |
CPU架构 |
实例类型 |
公共镜像 |
镜像版本 |
弹性云服务器 |
鲲鹏计算 |
鲲鹏通用计算增强型kc1.xlarge.4 4vCPUs 16GiB |
Huawei Cloud EulerOS |
Huawei Cloud EulerOS 2.0 Arm 64bit sdi5 for ECS BareMetal With Uniagent |
2.3.2 Ascend NPU
产品名称 |
芯片类型 |
CANN版本 |
驱动版本 |
操作系统 |
堡垒机 |
昇腾910B3 |
CANN 8.0.RC2 |
23.0.6 |
Huawei Cloud EulerOS 2.0 |
2.4 验证截图
2.4.1 Kunpeng CPU
在线对话:
自定义提示:
文本生成:
2.4.2 Ascend NPU
启动服务:
推理状态:
在线对话:
自定义提示:
NPU运行前:
NPU运行后:
- 点赞
- 收藏
- 关注作者
评论(0)