wsl docker里运行ollama并使用nvidia gpu的一些记录

news/2025/3/17 13:30:06/文章来源:https://www.cnblogs.com/imliuyu/p/18342394

 

1、安装wsl2

具体过程网上一搜一把,这里就先略过了,只有wsl2能用哈

2、wsl里装docker,及相关配置

装docker

wget https://download.docker.com/linux/static/stable/aarch64/docker-23.0.6.tgz
cd /mydata/tmp/
tar  -zxvf  docker-23.0.6.tgz
mv docker/* /usr/bin/
mv docker.service  /usr/lib/systemd/system/
chmod +x /usr/lib/systemd/system/docker.service

装完后有个小问题,wsl里的systemctl没法用,所以要编辑 /etc/wsl.conf 文件,添加:

[boot]
systemd=true

wsl --shutdown 停止后再启动。

然后是某些总所周知的原因国内没法用dockerhub比较烦,这里推荐 这个教程 来解决。

3、给wsl装上 NVIDIA Container Toolkit,并让wsl能识别显卡

只用CPU来跑ollama的话可以跳过这一步,不过CPU真的太慢了。

装 NVIDIA Container Toolkit:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get updatesudo apt-get install -y nvidia-container-toolkit
(参考自这个教程)

然后 nvidia-smi 看一下(提示没nvidia-smi命令的话 apt-get install装一下),这时候极大可能看到的列表为空。

查阅n卡官网的说明我们得知,还需要去 https://www.nvidia.com/Download/index.aspx 这个地址下载对应你显卡版本的GeForce Game Ready 驱动程序。

下载安装,重启电脑,再敲nvidia-smi命令,看到如下信息就是wsl识别到显卡了:

nvidia-smi
Sun Aug  4 22:21:33 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.01             Driver Version: 560.70       CUDA Version: 12.6     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|

4、docker里跑ollama

运行如下命令启动ollama,只用GPU的话把--gpus=all这个去掉就行:

docker run -d --gpus=all -v /dockerdata/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

如下命令拉取想要的模型

docker exec -it ollama ollama pull

然后运行如下命令就可以对话了

docker exec -it ollama ollama run llama3.1

或者调web接口:

curl http://localhost:11434/api/generate -d '{"model": "qwen:4b","prompt": "写一个冒泡排序","stream": false
}'

可以看到GPU用起来了:

虽然笔者的GPU是老掉牙的MX150,但性能明显比CPU模式要好很多,CPU跑这个问题要3分钟左右才有响应,但是GPU10多秒就开始有流输出了。但奇怪的是流输出开始后,GPU的使用率立马又掉下去了,不知道这个是bug还是feature还是笔者哪里没弄对,后面再研究一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/777947.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员副业探索之电商

在腾讯广告工作期间,我主要负责小程序电商与广告业务,见证了互联网电商行业的剧变,特别是众多电商公司纷纷拥抱私域流量,直播带货成为新风尚,广告投入也在持续增加。通过这些经历,我积累了不少关于互联网电商的经验,并萌生了尝试电商副业的想法。 在小红书上,女装博主们…

mysql 为什么很多互联网公司选择了读可提交

前言 在默认环境下,mysql 是可重复读,为什么默认可重复读呢? 一般情况下感觉读可提交就行,可重复读解决幻读的问题,但是大多情况下没有幻读的问题,所以也没有必要可重复读。 那么为什么mysql 要把默认配置设置为可重复读呢? 正文 历史原因:这种图,如果是在可提交读的情…

day2-admin管理后台

admin管理后台 1.基于django初始化一个项目 1.conda activate 虚拟名字#进入虚拟环境 2.django-admin startproject blog#创建一个项目blog 3.cd blog #进入blog项目文件夹中 4.python manage.py startapp app的名字#创建一个app初始化数据库(django自带的sqlite)1.python ma…

1-初始前端基本标签

目录初始html –超文本标记语言1.超文本:2.标记语言:3.标签4.html基本框架5.拓展插件6.文字标签7.转义字符8.语义化与SEO 初始html –超文本标记语言 1.超文本:比普通的文本更厉害。可以插入图片/音乐/视频/超链接,对立面的内容进行排版,样式设计2.标记语言:可以吧html当做…

WIN10使用记录

一、win10任务栏任务缩略图变列表 运行中输入regedit,打开注册表编辑器。HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband在右侧窗口中找到NumThumbnails,如果没有的话也要手工新建一个Dword(32位)值,把其命名为NumThumbnails, 双击NumT…

「Day 1—递归问题」

递归问题 定义 简洁来说就是一个函数不断调用自身的一个过程。 习题 汉诺塔问题 思路 对于这个经典的问题,我们考虑了使用递归的做法,由于盘子是在三个底座上来回辗转的,所以我们要确定起始座,辅助座,和目标座。我们专注于最下面的最大的那个盘子,先将盘子都放到辅助座上…

集合类关系

每天坚持,终会抵达!

人工智能的虚拟世界:源码和制作方法

源码和制作方法:人工智能的三维虚拟世界,完全免费、完全开源、完整无缺,一步步教你怎么制作这个游戏。8月4日修复学校场景输入框无法输入的故障,并增加教室外的楼道场景。 源码和制作方法:人工智能的三维虚拟世界,完全免费、完全开源、完整无缺,一步步教你怎么制作这个游…

各种变量

1.局部变量2.实例变量相当于把Hello拿了出来,作为一个变量类型来使用 布尔值的默认值是false 3.类变量4.常量

【LCA 树上两点的距离 判定点是否在某条边中】洛谷P3398 仓鼠找sugar

题目链接:P3398 仓鼠找 sugar - 洛谷 | (luogu.com.cn) 题目大意:判定一棵树上的两条边是否相交 Tag: [LCA] [树上两点间距离的计算] [如何判断与点在某条路径上] 思路: \[\begin{align} &1.建图\\ &2.\text{dfs}然后\ 计算出每个点的深度 和计\text{anc}(i,j)\\ &…

go-zero微服务框架的静态文件服务

目录go-zero微服务框架的静态文件服务go-zero版本新建项目目录新建 demo.api 文件生成api代码新建建太文件查看文件目录写入静态服务代码访问1.html参考文档 go-zero微服务框架的静态文件服务 go-zero版本 go-zero v1.7.0 新建项目目录mkdir demo cd demo新建 demo.api 文件 de…

代码随想录Day4

24.两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head = [1,2,3,4] 输出:[2,1,4,3]示例 2: 输入:head = [] 输出:[]示例 3: 输入:head…