tnblog
首页
视频
资源
登录

基于Ollama创建Gemma定制化AI模型

6023人阅读 2024/2/27 12:46 总访问:3455218 评论:0 收藏:0 手机
分类: AI

基于Ollama创建Gemma定制化AI模型

什么是Gemma?


Gemma模型使用了和Gemini同源的技术,总共有20亿参数和70亿参数两种规模,每个规模又分预训练和指令微调两个版本。
其中20亿参数版本可以直接在笔记本电脑上运行,而70亿参数版本在一系列语言理解、推理、数学等标准测试上击败了主流开源模型Llama-2和Mistral,一度登顶Hugging Face开源大模型排行榜,成为目前全球最强的开源大模型。


接下来我们通过Ollama来下载gemma:2b

前提准备


请提前安装好Ollama应用。
可以参考我这篇博客进行安装:https://www.tnblog.net/hb/article/details/8200

开始实践


首先执行如下命令拉gemma:2b到本地。

  1. ollama pull gemma:2b


下载完成后我们可以看看gemma:2b大小。

  1. ollama list


我们发现只有1.7G,然后我们运行gemma:2b

  1. ollama run gemma:2b


问一些问题,它能做相应的回答。

Modelfile定制化


接下来我们通过编写Modelfile进行定制化应用。
创建一个gemma-test-1.Modelfile文件,并写入如下内容(这里面的参数待会讲):

  1. FROM gemma:2b
  2. PARAMETER temperature 0.1
  3. PARAMETER num_ctx 4096
  4. SYSTEM """
  5. Determine the return result based on the content of the question.
  6. If the question is about obtaining,get or downloading today's PLT file, you should answer '1'.
  7. If the question is about obtaining,get or downloading today's dwg file, you should answer '2'.
  8. If the question is about obtaining,get or downloading yesterday's PLT file, you should answer '3'.
  9. If the question is about obtaining,get or downloading yesterday's dwg file, you should answer '4'.
  10. If the question is about obtaining,get or downloading a dwg file with the provided date, you should answer '5' and answer the provided date (format: yyyy-MM-dd, Example:2024-02-26).
  11. Your response should be direct and only based on the file type mentioned in the question, avoiding providing irrelevant information or suggestions.
  12. """
  13. TEMPLATE """
  14. {{ if .System }}<|im_start|>system
  15. {{ .System }}<|im_end|>
  16. {{ end }}{{ if .Prompt }}<|im_start|>user
  17. {{ .Prompt }}<|im_end|>
  18. {{ end }}<|im_start|>assistant
  19. """
  20. # 设置其他相关参数以优化性能和回答质量
  21. PARAMETER repeat_penalty 1.1
  22. PARAMETER top_k 40
  23. PARAMETER top_p 0.9
  24. PARAMETER stop "<|im_start|>"
  25. PARAMETER stop "<|im_end|>"
  26. LICENSE """
  27. this is license,Bob create it.
  28. """


我这里主要的规则就是:
1.我输入:下载今天的plt文件。AI回答:1。
2.我输入:下载今天的dwg文件。AI回答:2。
3.我输入:下载昨天的plt文件。AI回答:3。
4.我输入:下载昨天的dwg文件。AI回答:4。
5.我输入:下载具体时间的dwg文件。AI回答:5。并返回指定的时间。
接下来我们通过执行如下命令通过gemma:2b生成自己的gemma-test-1AI模型。

  1. ollama create gemma-test-1 -f gemma-test-1.Modelfile


很快,生成成功后将它跑起来,问一些问题。

  1. ollama run gemma-test-1:latest


我们发现它回答得几乎没有问题。

如果它回答的没有问题,根据用户输入的问题,请求自定义AI模型回答后的结果进行处理,然后返回对应的处理结果。
AI自动处理流程化的应用就诞生了。

参数说明


定义的参数有点像dockerfile一样的配置

FROM


FROM指令定义了创建模型时要使用的基本模型。

  1. FROM <model name>:<tag>

PARAMETER


PARAMETER指令定义了模型运行时可以设置的参数。

  1. PARAMETER <parameter> <parametervalue>


有效参数如下表所示:

参数 描述 值类型 用法示例
mirostat 启用 Mirostat 采样以控制困惑度。(默认值:0、0 = 禁用、1 = Mirostat、2 = Mirostat 2.0) int mirostat 0
mirostat_eta 影响算法对生成文本反馈的响应速度。较低的学习率将导致调整速度较慢,而较高的学习率将使算法更具响应性。(默认值:0.1) float mirostat_eta 0.1
mirostat_tau 控制输出的一致性和多样性之间的平衡。较低的值将导致文本更加集中和连贯。(默认值:5.0) float mirostat_tau 5.0
num_ctx 设置用于生成下一个标记的上下文窗口的大小。(默认值:2048) int num_ctx 4096
num_gqa Transformer 层中 GQA 组的数量。某些型号需要,例如 llama2:70b 为 8 int num_gqa 1
num_gpu 要发送到 GPU 的层数。在 macOS 上,默认为 1 启用金属支持,0 禁用。 int num_gpu 50
num_thread 设置计算期间使用的线程数。默认情况下,Ollama 将检测到这一点以获得最佳性能。建议将此值设置为系统具有的物理 CPU 核心数(而不是逻辑核心数)。 int num_thread 8
repeat_last_n 设置模型回溯多远以防止重复。(默认值:64,0 = 禁用,-1 = num_ctx) int repeat_last_n 64
repeat_penalty 设置惩罚重复的强度。较高的值(例如,1.5)将更强烈地惩罚重复,而较低的值(例如,0.9)将更宽松。(默认值:1.1) float repeat_penalty 1.1
temperature 模型的温度。提高温度将使模型的答案更有创意。(默认值:0.8)这个值越低准确率越高。 float temperature 0.7
seed 设置用于生成的随机数种子。将其设置为特定数字将使模型为相同的提示生成相同的文本。(默认值:0) int seed 42
stop 设置要使用的停止序列。当遇到这种模式时,LLM 将停止生成文本并返回。可以通过stop在模型文件中指定多个单独的参数来设置多个停止模式。 string stop “AI assistant:”
tfs_z 无尾采样用于减少输出中不太可能的标记的影响。较高的值(例如,2.0)将更多地减少影响,而值 1.0 将禁用此设置。(默认值:1) float tfs_z 1
num_predict 生成文本时要预测的最大标记数。(默认值:128,-1 = 无限生成,-2 = 填充上下文) int num_predict 42
top_k 减少产生废话的可能性。较高的值(例如 100)将给出更多样化的答案,而较低的值(例如 10)将更加保守。(默认值:40) int top_k 40
top_p 与 top-k 一起工作。较高的值(例如,0.95)将导致更加多样化的文本,而较低的值(例如,0.5)将生成更加集中和保守的文本。(默认值:0.9) float top_p 0.9

TEMPLATE


TEMPLATE要传递到模型中的完整提示模板。
它可以包括(可选)系统消息、用户消息和模型的响应。

Variable Description
{{ .System }} 用于指定自定义行为的系统消息。
{{ .Prompt }} 用户提示信息。
{{ .Response }} 模型的响应。生成响应时,该变量后面的文本将被省略。
  1. TEMPLATE """{{ if .System }}<|im_start|>system
  2. {{ .System }}<|im_end|>
  3. {{ end }}{{ if .Prompt }}<|im_start|>user
  4. {{ .Prompt }}<|im_end|>
  5. {{ end }}<|im_start|>assistant
  6. """

SYSTEM


SYSTEM指令指定要在模板中使用的系统消息(如果适用)。

  1. SYSTEM """<system message>"""

ADAPTER


ADAPTER指令指定要应用于基本模型的 LoRA 适配器。
该指令的值应该是绝对路径或相对于 Modelfile 的路径,并且文件必须是 GGML 文件格式。
适配器应该从基本模型进行调整,否则行为是未定义的。

  1. ADAPTER ./ollama-lora.bin

LICENSE


LICENSE指令允许您指定共享或分发与此模型文件一起使用的模型的合法许可。

  1. LICENSE """
  2. <license text>
  3. """

MESSAGE


MESSAGE指令允许您指定模型在响应时使用的消息历史记录:

  1. MESSAGE user Is Toronto in Canada?
  2. MESSAGE assistant yes
  3. MESSAGE user Is Sacramento in Canada?
  4. MESSAGE assistant no
  5. MESSAGE user Is Ontario in Canada?
  6. MESSAGE assistant yes

上传到Ollama官网中


首先到官网中注册一个账号。
https://ollama.com/library
然后开始创建模型。


然后通过查看本地key配置到Ollama官网上。

  1. cat ~/.ollama/id_ed25519.pub


然后更具它的提示创建并上传。

  1. ollama create bob/gemma-test-1 -f gemma-test-1.Modelfile
  2. ollama push bob/gemma-test-1


现在就能在官网中看到了。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

基于office 把wordwordxpptpptxxlsxlsx转为pdf在线预览

//,要在服务器安装office,需要引用usingMicrosoft.Office.Interop.Word;usingMicrosoft.Office.Interop.PowerPoint;usingMi...

基于open office 把各种类型转为pdf在线预览

//需要在服务器安装openoffice,引用cli_basetypes,cli_cppuhelper,cli_oootypes,cli_ure,cli_uretypes publicboolCon...

基于接口的Sort排序方法原理

集合提供了Sort,我们可以实现IComparer接口,来实现自定义的对象排序方法:例如:根据年龄来排序publicclassMySort:ICompa...

基于angular的HttpClient封装_HttpClient

基于angular的HttpClient封装_HttpClient,直接复制源码即可用包含常用的get、post、patch、delete和put请求;import{HttpC...

Elasticsearch 基于词项和基于全文的搜索

Elasticsearch 基于词项和基于全文的搜索[TOC] 基于 Term 的查询Term 的重要性Term 是表达语意的最小单位。搜索和利用语言...

Centos7安装k8s(基于kubeadm)

Centos7安装k8s(基于kubeadm)[TOC] 下载相关包 链接:https://pan.baidu.com/s/1H9MuZsf28f_3uyVHBUS8jQ提取码:w9tv ...

.net core调用基于GPT-3.5的ChatGPT接口

基于GPT-3.5的接口OpenAI 已经开放和官网版本的ChatGPT相同的模型 gpt-3.5-turbo GPT-3.5和3.0调用方式几乎一样,修改一下...

Pytorch 基于经典网络架构训练图像分类模型

Pytorch 基于经典网络架构训练图像分类模型[TOC] 数据预处理部分:数据增强:torchvision中transforms模块自带功能,比较...

Ollama 离线 Llama 2大语言模型的安装

Ollama 离线 Llama 2大语言模型的安装[TOC] Llama 2Llama 2是由于Meta旗下开发的一款AI大语言模型,要把它跑起来是需要很...

C创建定时服务

步骤一、创建服务项目。步骤二、添加安装程序。步骤三、服务属性设置【serviceInstaller1】。4.1 添加定时任务publicpartia...

Mysql 游标创建

游标:可以来存储一个结果集,可以通过遍历来访问到每一个数据需求:分表数据。 把一张表的数据根据需求分离,创建不同的表...

使用swagger创建webapi文档描述---详解

在前后端分离开发中,作为后端如何给前端提供有效直观的接口文档呢?没错,就是使用swagger 俗称“丝袜哥”教程:一、首先...

XDocument创建XML文件和读取文件

创建根节点创建父节点创建子节点范例: //获取根节点对象 XDocument document = new XDocument(); //创建根节点下的...

.NET MVC 中 Xml的创建读取操作

在.net mvc中,想要进行读取xml的操作需要以下步骤: Xml用途:配置、传输、储存。1,先要导入命名空间:如下图: 2,我们需要...

Excel的创建以及填充数据

在公司实际开发中,我们用到Excel文件的地方很多,下面我来讲解一下如何创建比如我们做一个如下图的报表:前台页面设计:@{...
这一世以无限游戏为使命!
排名
2
文章
633
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术