在摩尔线程 MTT S80 上使用 Ollama 进行 DeepSeek R1 蒸馏版模型推理

news/2025/2/23 19:56:13

什么是 Ollama?​

Ollama 是一个工具和平台,专注于简化和优化大语言模型( LLM )的管理和部署。它主要提供了一种方便的方式,在本地或边缘设备上运行、管理和调用大型语言模型,同时通过其特有的 Docker 集成和 API 接口,使得 LLM 的使用更加灵活、轻量且安全。

Ollama 因为其本地化、轻量级和灵活性,成为一种在多个环境中管理和部署 LLM 的理想工具。

使用 Ollama 进行 Deepseek R1 蒸馏版模型推理​

以下代码运行在 x86 架构的 Ubuntu 20.04/22.04 系统。

配置容器运行时​

请参考以下链接安装和配置容器运行时。

  1. 安装 Docker: Docker 安装指南。
  2. 安装 MTT S80 最新驱动 (当前最新版本为 rc3.1.1): MUSA SDK 下载。 注意该版驱动类型为 compute-only,可能存在图形界面无法启动的风险。
  3. 安装 MT Container Toolkit (当前为 v1.9.0): MT CloudNative Toolkits 下载

检查容器运行时配置是否正确,确认输出的默认运行时为 mthreads

$ (cd /usr/bin/musa && sudo ./docker setup $PWD)
$ docker info | grep mthreads
 Runtimes: mthreads mthreads-experimental runc
 Default Runtime: mthreads

拉取镜像并运行容器​

拉取 Ollama 镜像:

docker pull mthreads/ollama

启动容器:

docker run -it -d --name=ollama -v {your_host_dir}:/root/.ollama mthreads/ollama

以上命令:

  • 启动并运行一个基于mthreads/ollama镜像的容器。
  • -it:交互式运行容器,分配一个伪终端。
  • -d: 将容器运行在后台。
  • --name=ollama: 将容器名指定为“ollama”。
  • -v {your_host_dir}:/root/.ollama: 将主机的 {your_host_dir} 目录挂载到容器内的 /root/.ollama 目录。因为/root/.ollama是镜像默认使用的ollama数据存放目录,挂载该目录后即使容器被销毁,下载的模型数据文件依然会被保存在指定的{your_host_dir} 目录下。{your_host_dir}可根据用户实际情况填入。

进入容器:

docker exec -it ollama bash

运行模型:

ollama run deepseek-r1:7b --verbose

等待 Ollama 模型拉取完成后,即可以开始对话。 加入--verbose参数以显示模型性能,可根据需要选择是否传入。

监测 GPU 状态​

在与模型对话的同时,可以通过另外启动一个终端并执行:

watch -n 1 mthreads-gmi

来实时观测 GPU 的利用率等状态数据。以上-n 1代表每一秒刷新一次,实际可根据需要调整设置。

以下是运行deepseek-r1:7b的示例图:

sample-run-7b

以下是运行deepseek-r1:14b的示例图:

sample-run-14b

完整的R1蒸馏模型列表可以在 Ollama 官网找到。以 MTT S80 为例,其可以运行包括 deepseek-r1 1.5B/7B/8B/14B 的模型。

Open WebUI界面​

也可以结合 Open WebUI 来创建一个通用的用户界面,实现类似OpenAI的聊天界面。配置详情参考使用摩尔线程 GPU 搭建个人 RAG 推理服务。


http://www.niftyadmin.cn/n/5863726.html

相关文章

Kubernetes 中服务注册机制解析:自动化与灵活性的背后

目录 1. 引言:Kubernetes 中的服务注册与发现2. Kubernetes 中的服务注册与发现2.1 Kubernetes Service3. 服务注册流程3.1 Pod 与 Service 的关联3.2 自动注册3.3 DNS 解析与服务发现4. 例子:Kubernetes 服务注册与发现流程5. 总结1. 引言:Kubernetes 中的服务注册与发现 …

linux查看程序占用的本地端口

ss是Socket Statistics的缩写,用来替代旧的netstat工具,功能更强大,执行更快。它用于查看系统的网络连接情况,包括TCP、UDP等协议的信息。 一. 命令解析: sudo ss -tulwnpss (Socket Statistics):替代 ne…

C++ 互斥锁的使用

mutex std::mutex 是C标准库中用于线程同步的互斥锁机制,主要用于保护共享资源,避免多个线程同时访问导致的竞态条件。 它提供了以下功能: 加锁(lock):阻塞当前线程,直到获取锁。 解锁&#…

微信小程序-组件复用机制behaviors

简介: 小程序的 behaviors方法是一种代码复用的方式,可以将一些通用的逻辑和方法提取出来,然后在多个组件中复用,从而减少代码冗余,提高代码的可维护性。 使用 behaviors 复用代码 如果需要复用代码,可以通过 Behavior() 方法定义一个行为,每个行为可…

vue2.x 中子组件向父组件传递数据主要通过 $emit 方法触发自定义事件方式实现

在 Vue 2.x 中,子组件向父组件传递数据主要通过 自定义事件 的方式实现。具体步骤如下: 1. 子组件通过 $emit 触发事件 子组件可以使用 $emit 方法触发一个自定义事件,并将数据作为参数传递给父组件。 语法: this.$emit(事件名…

0基础学前端-----CSS DAY13

HTML和CSS3提高 视频参考&#xff1a;B站Pink老师 本节重点&#xff1a;HTML和CSS3的新增特性 本章目录 HTML和CSS3提高1.HTML5新特性1.1HTML新增的语义化标签&#xff08;div无语义&#xff09;1.2 HTML5新增的多媒体标签1.2.1 视频<video>1.2.2 音频audio1.2.3 多媒体…

蓝桥杯——按键

一&#xff1a;按键得原理图 二&#xff1a;按键的代码配置 step1 按键原理图对应引脚配置为输入状态 step2 在GPIO中将对应引脚设置为上拉模式 step3 在fun.c中写按键扫描函数 写完后的扫描函数需放在主函数中不断扫描 扫描函数主要通过两个定义变量的值来判断&#xf…

车载诊断架构 --- LIN节点路由转发注意事项

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…