google最新大语言模型gemma本地化部署

2024-03-01 12:04

本文主要是介绍google最新大语言模型gemma本地化部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Gemma是google推出的新一代大语言模型,构建目标是本地化、开源、高性能。

     与同类大语言模型对比,它不仅对硬件的依赖更小,性能却更高。关键是完全开源,使得对模型在具有行业特性的场景中,有了高度定制的能力。

     Gemma模型当下有四个版本,Gemma 7b, 2b, 2b-it, 7b-it 。通俗来说,2b及精简小巧,覆盖了现代流行的语言,对硬件依赖小。7b是常规型的,要有的基本都有了,硬件上最低需要8gb内存(显存)。后缀带it的版本,可适用于nvidia较新显卡,支持int8(fp8), tensorrt核心。但我的40hx硬件被阉割太厉害,连fp16都跑不起来,就没测试了。

安装环境:

我的硬件环境是虚拟机环境,40hx显卡直通,linux系统,远程访问。软件环境需要目标是ollama及open-webui。ollama是大语言模型的一个运行环境,open-webui是基于openAI及ollama的一个前端界面。目前ollama只支持nvidia的GPU加速,别的显卡就不讨论了。

安装过程:

1. 虚拟机安装,这边需要注意的是,显卡必须直通,CPU必须在主机直通模式。不然GPU加速就不能成功。

2. 安装常用的软件,wget curl git nvidia-toolkit

3. 确认环境:nvidia-smi看一下显卡是不是正常驱动,cat /proc/cpuinfo 看一下AVX是否加载。这二点决定了GPU加速

4. 在linux上运行:(要科学)

curl -fsSL https://ollama.com/install.sh | sh

然后等待安装完成,安装完成后,执行 ollama run gemma:2b 或者 ollama run gemma:7b 等模型下载完毕后,就进入字符界面,你就可以跟机器交流了。按ctrl-d可退出。

5. 远程访问:

因为我是在服务器上安装的,操作需要在PC上,所以需要做一下远程

sudo nano /etc/systemd/system/ollama.service (我是ubuntu系统debian类似,其它系统查看services配置方法)

在nano中,[Service]下面加一行 Environment="OLLAMA_HOST=0.0.0.0:11434"

保存退出后,执行 sudo systemctl daemon-reload 再执行 sudo systemctl restart ollama 

PC端打开浏览器,访问http://你的服务器IP:11434 如果显示ollama表示已经成功了。

6. open-webui安装

    现在的linux发布版本,基本都预装了docker环境,如果你的linux刚好没有,就先安装docker

然后运行 sudo docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

其中3000可以换成你想要的发布端口。

等待安装完成后,访问http://你的服务器IP:3000

7. 配置

第一次登录是需要注册自己id的(sign up) 注册好后,进入系统,默认是已经可以找到ollama模型的。其它配置自己摸索吧,针对Gemma模型的关键配置是在setting下

点击上图这个Show, 然后找到 Context Length这是上下文中的内容关联长度,Ollama默认是2048, 所以你会发现跟机器聊几句就聊不到一起了,Gemma可以设置到8192,这样就可以愉快地聊上很久。另一个是Max Tokens,默认长度是128, Gemma据说可以达到6T个tokens, 这二个参数,在GPU加速时,一个是占了显存,一个是占了性能。ollama为了保持各种模型的兼容性,这二项参数上留得很保守,在Gemma与40hx这样的适配上,可适当增加。

教程结束,祝玩得愉快!

这篇关于google最新大语言模型gemma本地化部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/762391

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署