本地可以Run大模型吗?Llama3?安排!

➡️ 前言

本地可以跑大模型吗?

ChatGPT发布之后,引起了AI领域剧烈震动,从2023年3月百度发布新一代大预言模型文心一言开始,大模型如雨后春笋般不断涌现,国内阿里巴巴的通义千问、华为的盘古大模型、科大讯飞的星火认知大模型、360的360智脑、字节跳动的火山方舟、京东的言犀产业大模型、腾讯的混元大模型、谷歌的PaLM2模型、Meta的LLaMA模型、微软的Phi等一一亮相。业内都把2023年称之为AI元年。

不少程序员都想跑一下大模型,小编也想试试,现在本地运行大模型方法有好几种,那么我们今天来介绍一下其中一种–>Ollama。

Ollama比较倾向于为个人用户提供便捷的开源模型部署和调用服务,而且Ollama也提供OpenAI风格的调用方法,支持GPU和CPU混合运行模式、以及更加便捷的显存管理方法。一起跟随小编来试试吧

➡️ 目录

一、安装NVIDIA相关组件

二、安装ollama

三、安装OpenWebUI

➡️ 正文

一、安装NVIDIA相关组件

虽然ollama支持GPU和CPU混合,但是我们还是检查一下环境是否支持CUDA,如果支持,那安装一下NVIDIA驱动,为大模型加速。
如果已安装CUDA相关驱动,这里可忽略。

1. 检查环境
查看有没有Nvidia GPUs

lspci | grep -i nvidia

图片如图↑,返回信息显示服务器上是有显卡的,那么下面安装一下驱动

英伟达这个标识有可能全大写,全小写,或者是首字母大小Nvidia,所以我们平时在搜索这个英文的时候,建议忽略大小写查询。

2. 查看系统名称以及相关版本号

uname -m && cat /etc/*release

图片

图中可知,系统架构是X86_64,内核版本4.18.0-513.24.1.0.1.an8.x86_64
重点看这里 ID_LIKE=“rhel fedora centos” VERSION_ID=“8.9”。

我们系统安装的是龙蜥操作系统,兼容 CentOS 软件生态,从参数来看,系统名称可以参考rhel/fedora/centos,版本参考8.9。

(tip:centos停更了,笔者采用国产龙蜥操作系统,安装步骤可以查看之前发布的教程)

3. 禁用nouveau

在Linux系统中安装NVIDIA显卡驱动前,建议先卸载Linux系统自带的显卡驱动nouveau。

nouveau是一个由爱好者组织的针对NVIDIA显卡开发的第三方开源3D驱动的共同项目,并且nouveau是在完全没有得到NVIDIA任何支持的情况下进行开发的,与NVIDIA驱动存在冲突,并且会影响GPU运行的可靠性,使用NVIDIA GPU前先禁用该驱动。如果没有禁用,在安装过程中,也会被提示有冲突,导致安装失败。

查看nouvean是否已加载,如果未被加载,此处跳过。

lsmod|grep -i nouveau

图片

如回显中存在nouveau,则说明nouveau驱动已被加载。需要禁用。
以本篇anolis系统为例
创建文件

touch /etc/modprobe.d/blacklist-nouveau.conf

添加如下文本:

blacklist nouveau
options nouveau modeset=0

然后保存退出,执行命令

dracut --force

重启服务器

reboot

启动之后,再次检查是否还存在nouveau,如不存在,禁止成功,进行下一步。
检查一下必要组件是否已安装,如果没安装,输入Y进行安装操作。

dnf install --enablerepo=Plus gcc gcc-c++ kernel-devel-$(uname -r) kernel-headers-$(uname -r)

图片

4. 下载&安装驱动

上面查看服务器是否有NVIDIA的时候可以看到对应的型号,去NVIDIA的官网下载对应型号的驱动文件。

https://www.nvidia.cn/Download/index.aspx?lang=cn#

图片

小编自己的对应型号搜索到下载的文件是

NVIDIA-Linux-x86_64-470.239.06.run

执行如下命令启动安装,安装过程中会编译适配当前内核版本的驱动,按照提示安装即可:

sh NVIDIA-Linux-x86_64-470.239.06.run --no-x-check

图片

图片

图片

安装完成后执行命令即可看到驱动的信息

lsmod | grep -i nvidia

图片

安装成功,执行命令可以查看NVIDIA工作情况

nvidia-smi

图片

上图可知,CUDA的版本为11.4,安装与NVIDIA Driver版本适配的CUDA去官网下载需要安装的CUDA版本:

https://developer.nvidia.com/cuda-toolkit-archive

小编对应型号下载的是

cuda_11.4.0_470.42.01_linux.ru

执行如下命令启动安装(文件比较大,时间可能较长)

sh cuda_11.4.0_470.42.01_linux.run

图片

如图↓所示,输入accept,同意用户协议。

图片

如图↓,CUDA包里面包含了NVIDIA Driver,前面我们安装过了NVIDIA Driver,这里取消该选项。

图片

如图↓,安装成功。

图片

根据图片提示添加环境变量

echo 'export PATH=/usr/local/cuda-11.4/bin:$PATH' >> /etc/profile
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH' >> /etc/profile
source /etc/profile
ldconfig

nvcc --version命令可以查看编译器版本

图片

安装与CUDA版本适配的cuDNN

下载cuDNN需要NVIDIA账号,并且加入了「NVIDIA Developer Program」。

https://developer.nvidia.com/developer-program

下载与CUDA版本对应的cuDNN版本:

https://developer.nvidia.com/rdp/cudnn-archive

图片

获取到的是一个压缩文件
cudnn-linux-x86_64-8.9.7.29_cuda11-archive.tar.xz
解压到当前目录,解压完毕后,进入解压文件夹
执行如下命令将cuDNN拷贝到前面安装的CUDA目录下

到此,Nvidia相关组件安装算是结束了,可以松一口气了。

二、安装ollama

1. 一键安装
访问ollama官网,也提供了windows的安装包,不过我们用的是Linux系统,官网也提供了一键安装脚本命令。

#一键安装
curl -fsSL https://ollama.com/install.sh | sh

2. 手动安装

一键安装有一键的好处,小编喜欢自己鼓捣,下面我们选择手动自行安装。

图片

访问ollama的网址

https://github.com/ollama/ollama/blob/main/docs/linux.md

下载ollama的二进制文件

curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama

图片

赋予可执行权限

chmod +x /usr/bin/ollama

实际上,下载完二进制文件,现在已经可以使用了;不过为了后续方便,我们添加一个启动服务,也是官方推荐的方式。
先添加一个用户

useradd -r -s /bin/false -m -d /usr/share/ollama ollama

在/etc/systemd/system
创建一个名称ollama.service的文件

[Unit]Description=Ollama ServiceAfter=network-online.target[Service]ExecStart=/usr/bin/ollama serveUser=ollamaGroup=ollamaRestart=alwaysRestartSec=3#添加相关变量Environment="OLLAMA_HOST=0.0.0.0"Environment="OLLAMA_MODELS=/mnt/vdb1/module/ollama/.ollama/models"#Environment=CUDA_VISIBLE_DEVICES=1,2[Install]WantedBy=default.target

后续方便维护和集成调用,我们添加三个变量

①修改默认地址

ollama默认绑定127.0.0.1,端口11434。后面我们会集成网页工具来调用,那需要修改一下访问的地址,这里可以通过OLLAMA_HOST更改绑定地址。

②修改存储路径

默认情况下,不同操作系统大模型存储的路径如下:

在这里插入图片描述

Linux平台安装ollama时,默认安装时会创建用户ollama,再将模型文件存储到该用户的目录/usr/share/ollama/.ollama/models。但由于大模型文件往往特别大,有时需要将大模型文件存储到专门的数据盘,此时就需要修改大模型文件的存储路径。官方提供的方法是设置环境变量“OLLAMA_MODELS”。

③指定GPU

本地有多张 GPU,如何用指定的 GPU 来运行 ollama?在Linux上配置环境变量CUDA_VISIBLE_DEVICES来指定运行ollama的GPU。

创建完就可以开始启动了

在这里插入图片描述

添加开机启动

systemctl enable ollama

这下安装完结。

我们先把删除的方法贴上来。

在这里插入图片描述

好了,上面是整个安装和删除流程。

激动人心的时刻来了,我们开始来跑一个大模型看看
ollama支持的模型有很多,如图

图片

ollama还可以自定义模型文件

我们先选择比较火热的meta的llama3 8B的模型试试

执行命令

在这里插入图片描述

输入完命令,首次运行服务会开始下载模型文件,下载完自动运行,窗口上显示send a message,就是启动成功,可以开始聊天了

图片

图片

不过这样有点不好玩,必须在控制台才行,有个网页来对话就更好了,别担心,互联网是强大的,没有做不到,只有你想不到。

三、安装OpenWebUI

我们来安装一款ui工具

先安装一下docker

dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装可能会报软件冲突,按照提示添加替换试试
(尝试在命令行中添加 '--allowerasing' 来替换冲突的软件包 或 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用软件包的最佳候选)
dnf install docker-ce docker-ce-cli containerd.io --allowerasing

按照提示安装完docker
启动docker

systemctl start docker

国内从 DockerHub 拉取镜像有时会遇到困难,配置镜像加速可以缓解这一情况,在/etc/docker目录下新建文件,名称为daemon.json,在文件中添加镜像仓库地址。

在这里插入图片描述

在这里插入图片描述

docker可以搭配GPU一起运行,但是需要安装NVIDIA相关组件
可参考

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-yum-or-dnf

上命令…

#添加nvidia容器组件库
dnf config-manager --add-repo https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo
#安装nvidia容器组件
dnf install nvidia-container-toolkit
#配置容器信息
nvidia-ctk runtime configure --runtime=docker
#配置完查看信息
cat /etc/docker/daemon.json
#重启
dockersystemctl restart docker

图片

访问GitHub - open-webui网站查看安装方法

https://github.com/open-webui/open-webui
#有GPU的用这个
docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda#走CPU的用这个
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name openwebui1 --restart always ghcr.io/open-webui/open-webui:main

访问docker启动的地址加端口号3000

图片

首次登录没有账号注册一下

图片

登录之后还可以选择显示语言

图片

连接这里填服务器的地址,ollama默认端口11434

图片

最后展示一下成果!

图片

安装完成,动手试试吧!

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

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

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

相关文章

木材容易发霉怎么办除霉处理方法

木材存放不当就容易出现发霉情况,那么可通过那些方法将木材表面的霉斑除掉呢?经ihaoer防霉人士介绍处理木材发霉处理方法如下: 木材发霉的原因主要包括木材本身的营养物质、环境湿度、温度以及空气流动性等因素。木材中含有蛋白质、淀粉、油类…

【面试题】Linux 下 MakeFile(第一篇)

1.请简单介绍Makefile是什么? Makefile是用于编译和管理项目的一组规则和指令。它保存了编译器和连接器的参数选项,还表述了所有源文件之间的关系(如源代码文件需要的特定包含文件,可执行文件要求包含的目标文件模块及库等&#x…

CPR曲面重建代码

废话不说,直接上代码: #include "vtkAutoInit.h" #include "vtkPolyData.h" #include "vtkProbeFilter.h" #include "vtkParametricFunctionSource.h" #include "vtkParametricSpline.h" #include &…

基于Java微信小程序校园自助打印系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

2024年江苏省13市科技企业上市培育计划入库企业申报条件程序和截止时间

一、江苏省13市科技企业上市培育计划入库企业申报条件 1.企业属于有效期内高新技术企业,申报时须在我省行政区域内成立三年以上,经营状况良好,已设立或拟设立为股份有限公司,且尚未在主板、创业板、科创板、北证上市或在“新三板…

计算机网络知识点(八)

目录 一、简述HTTP常见的响应状态码及其含义 1、解析 2、分类 二、简述GET请求和POST请求的区别 三、简述Cookie和Session的区别 四、简述HTTPS的加密与认证过程 一、简述HTTP常见的响应状态码及其含义 1、解析 ①200:从状态码发出的请求被服务器正常处理。 …

【开源项目】智慧北京案例~超经典实景三维数字孪生智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码!

飞渡科技数字孪生北京管理平台, 依托实景数字孪生底座,以城市感知网络为硬件基础,以城市大数据为核心资源,以数字孪生、云计算、人工智能为关键技术,实现城市产业规划、资产安全管理、城市能耗监控等一体化空间融合。 …

CP AUTOSAR标准之FlexRayStateManager(AUTOSAR_CP_SWS_FlexRayStateManager)(更新中……)

1 简介和功能概述 该规范描述了AUTOSAR基础软件模块FlexRay状态管理器(FrSM)的功能、API和配置。   AUTOSAR BSW堆栈为每条通信总线指定一个总线特定状态管理器。该模块应实现相应总线的控制流。FrSM是通信服务层的成员。它与通信硬件抽象层和系统服务层交互。 3 相关文献 …

基于电商模式的性能测试(2) —— 使用Jmeter参数化功能+JSR223 PreProcessor+JSON Extractor完成注册登录的数据驱动

1、前置条件 此例使用的是GitHub上一个开源的电商项目mall,需要的可以去GitHub上下载部署,有详细的部署教程: GitHub地址:github.com/macrozheng/…部署教程:macrozheng.github.io/mall-learni… 2、场景抽离 首先要…

C#的无边框窗体项目模板 - 开源研究系列文章

继续整理和编写代码及博文。 这次将笔者自己整理的C#的无边框窗体项目的基本模板进行总结,得出了基于C#的.net framework的Winform的4个项目模板,这些模板具有基本的功能,即已经初步将代码写了,直接在其基础上添加业务代码即可&am…

java实现一个图的最短路径算法

import java.util.*; //java实现一个图的最短路径算法 public class Test_34 { // 定义一个常量INF,表示无穷大。private static final int INF Integer.MAX_VALUE; // 定义一个方法dijkstra,接受一个二维数组图和一个起始节点作为参数。public s…

七牛云 Miku 快直播,陪你一起看球!

足球,作为全球最受欢迎的运动之一,每一次大赛都是球迷心中的狂欢,每一场比赛都记录着足球历史的精彩。 2000 年,特雷泽盖的金球,照亮了法兰西的足球梦想。 2004 年,查理斯特亚斯的头槌破门,成就…

小甲鱼——集合

一什么是集合 type({}) <class dict> #字典 type({"one"}) <class set> #集合type({"one":1}) <class dict> #字典 跟集合一样&#xff0c;字典最大的特性就是——唯一性 即&#xff1a;集合中的所有元素&#xff0c;都应该是独…

第15天:Vue.js应用的测试和调试

第15天&#xff1a;Vue.js应用的测试和调试 目标 学习Vue.js应用的测试和调试方法&#xff0c;包括E2E&#xff08;端到端&#xff09;测试和单元测试。 任务概览 学习单元测试基础。探索E2E测试框架。实现Vue组件的测试。 详细步骤 1. 单元测试基础 单元测试是对应用中…

浅谈逻辑控制器之while控制器

浅谈逻辑控制器之while控制器 “While控制器”是一种高级控制结构&#xff0c;它允许用户基于特定条件来循环执行其下的子采样器或控制器&#xff0c;直至该条件不再满足。本文旨在详细介绍While控制器的功能、配置方法、使用场景以及实践示例&#xff0c;帮助测试工程师高效利…

上海市计算机学会竞赛平台2023年8月月赛丙组下降幂多项式

题目描述 &#x1d465;x 的 &#x1d458;k 次下降幂定义为 &#x1d465;(&#x1d458;)(&#x1d465;)(&#x1d465;−1)(&#x1d465;−2)⋯(&#x1d465;−&#x1d458;1)x(k)(x)(x−1)(x−2)⋯(x−k1) &#x1d465;x 的下降幂多项式是由 &#x1d465;x 的一组…

工信部中小企业局一行莅临盘古信息调研指导

近日&#xff0c;中小企业数字化转型城市试点调研交流活动在广东东莞举行&#xff0c;工业和信息化部中小企业局副局长商超&#xff0c;广东工业和信息化厅二级巡视员张振祥&#xff0c;工业和信息化部中小企业局创业创新处处长李海涛&#xff0c;东莞市委常委、副市长刘光滨&a…

泵设备的监测控制和智慧运维

泵是一种输送流体或使流体增压的机械。它通过各种工作原理&#xff08;如离心、柱塞等&#xff09;将机械能转换为流体的动能或压力能&#xff0c;从而实现液体的输送、提升、循环等操作。 泵的一些具体应用场景&#xff1a; 1.智能水务&#xff1a;在城市供水管网中&#xff…

【vuejs】 $on、$once、$off、$emit 事件监听方法详解以及项目实战

1. Vue实例方法概述 1.1 vm.$on vm.$on是Vue实例用来监听自定义事件的方法。它允许开发者在Vue实例上注册事件监听器&#xff0c;当事件被触发时&#xff0c;指定的回调函数会被执行。 事件监听&#xff1a;vm.$on允许开发者绑定一个或多个事件到Vue实例上&#xff0c;并且可…

python turtle 002代码表白

代码&#xff1a;pythonturtle002表白资源-CSDN文库 # 作者V w1933423 import turtle import mathdef draw_love():# 创建turtle画笔t turtle.pen()t turtle# 提起画笔&#xff0c;移动到起始位置t.up()t.goto(0, 150)t.down()# 设置颜色并开始填充t.color(red)t.begin_fill…