Ollama:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
无编辑摘要
无编辑摘要
第9行: 第9行:
ollama 是为了快速部署 Llama 大模型而诞生的,目前在 https://ollama.com/library 列出了可以支持部署的 LLM。
ollama 是为了快速部署 Llama 大模型而诞生的,目前在 https://ollama.com/library 列出了可以支持部署的 LLM。


下面的 Llama-3 example 在一台 6PCPU/8G RAM 主机上运行,单个 chat 会将全部 CPU 跑满。
下面的 Llama-3:8b example 在一台 6PCPU/8G RAM 主机上运行,单个 chat 会将全部 CPU 跑满,内存占用 1.5G。


=== Inst ===
=== Inst ===

2024年7月25日 (四) 14:32的版本

Llama 是 meta 开源的一款大模型,开源不到一个月的时间就有 19.7K 的 star。2024 年 4 月 19 日,Meta 在官网上官宣了 Llama-3,作为继 Llama-1、Llama-2 和 Code-Llama 之后的第三代模型,Llama-3 在多个基准测试中实现了全面领先,性能优于业界同类最先进的模型。

  • Llama-1: 2023 年 2 月发布。有 7B、13B、30B 和 65B 四个参数量版本。Llama-1 各个参数量版本都在超过 1T token 的语料上进行了预训训练,模型上下文长度 2,048。其中,最大的 65B 参数的模型在 2,048 张 A100 80G GPU 上训练了近 21天,并在大多数基准测试中超越了具有 175B 参数的 GPT-3。因为开源协议问题,Llama-1 不可免费商用
  • Llama-2: 2023 年 7 月发布了免费可商用版本,有 7B、13B、34B 和 70B 四个参数量版本,除了 34B 模型外,其他均已开源。Llama-2 将预训练的语料扩充到了 2T token,模型上下文长度 4,096,词表大小为 32K。并引入了分组查询注意力机制(grouped-query attention, GQA)等技术。通过进一步的有监督微调(Supervised Fine-Tuning, SFT)、基于人类反馈的强化学习(Reinforcement Learning with Human Feedback, RLHF)等技术对模型进行迭代优化,发布了面向对话应用的微调系列模型 Llama-2 Chat。通过“预训练-有监督微调-基于人类反馈的强化学习”这一训练流程,Llama-2 Chat 不仅在众多基准测试中取得了更好的模型性能,同时在应用中也更加安全。Meta 在 2023 年 8 月发布了专注于代码生成的 Code-Llama,共有 7B、13B、34B 和 70B 四个参数量版本
  • Llama-3: 2024 年 4 月,Meta 正式发布了开源大模型 Llama 3,包括 8B 和 70B 两个参数量版本。400B 参数量的版本计划在 2024 年 7 月 23 日发布。Llama-3 支持 8K 长文本,并采用了一个编码效率更高的 tokenizer(sentencepiece -> tiktoken, GPT4 使用 tiktoken),词表大小为 128K。在预训练数据方面,Llama-3 使用了超过 15T token 的语料
  • Llama 3.1: 2024 年 7 月 24 日,Meta 正式发布新一代开源大模型 Llama 3.1 系列,提供 8B、70B 及 405B 参数版本。使用 1.6 万个 H100 GPU、以及超过 15T token 的公开数据进行训练。 架构方面,该模型选择标准的解码器 transformer 模型架构进行调整,而不是混合专家模型,以最大化训练稳定性。采用了迭代的后训练程序,每一轮使用监督微调和直接偏好优化。其上下文长度被提升至 128K,而模型参数也被提高到了 4050 亿规模,是近年来规模最大的大语言模型之一。该模型在通用常识、可引导性、数学、工具使用和多语言翻译等广泛任务中足以对标 GPT-4、Claude 3.5 Sonnet 等领先的闭源模型。

Llama3.1-405B.jpg

ollama 是为了快速部署 Llama 大模型而诞生的,目前在 https://ollama.com/library 列出了可以支持部署的 LLM。

下面的 Llama-3:8b example 在一台 6PCPU/8G RAM 主机上运行,单个 chat 会将全部 CPU 跑满,内存占用 1.5G。

Inst

  • curl -fsSL https://ollama.com/install.sh | sh
  • MODEL
    • /usr/share/ollama/.ollama/models # Linux 存放下载的模型文件
    • ollama pull llama3 # pull, default 8B
    • ollama run llama3 # pull & run
    • ollama run llama3:70b
    • ollama rm gemma2:9b # rm model
  • ENV
    • export OLLAMA_HOST=127.0.0.1:30082 # 如果修改了默认端口(11434)
  • SETUP
  1. OLLAMA_MODELS: 模型文件存放目录
  2. OLLAMA_HOST: Ollama 服务监听的网络地址,默认为 127.0.0.1(0.0.0.0 允许外部网络访问)
  3. OLLAMA_PORT: Ollama 服务监听的默认端口,默认为 11434(修改后需要在环境变量 OLLAMA_HOST 指定)
  4. OLLAMA_ORIGINS: HTTP 客户端请求来源,半角逗号分隔列表,设置成星号,表示不受限制
  5. OLLAMA_KEEP_ALIVE: 大模型加载到内存中后的存活时间,默认为 300(s/m/h。0 = 处理请求响应后立即卸载模型,负数 = 一直存活)
  6. OLLAMA_NUM_PARALLEL: 请求处理并发数量,默认为 1,即单并发串行处理请求,可根据实际情况进行调整
  7. OLLAMA_MAX_QUEUE: 请求队列长度,默认值为 512,可以根据情况设置,超过队列长度请求被抛弃
  8. OLLAMA_DEBUG: 输出 Debug 日志标识,0/1 = 输出详细日志信息
  9. OLLAMA_MAX_LOADED_MODELS: 同时加载到内存中模型的数量,默认为 1
# /etc/systemd/system/ollama.service
[Service]
Environment="OLLAMA_HOST=0.0.0.0:30082"

systemctl daemon-reload
systemctl restart ollama
>>> Downloading ollama...
 ######################################################################## 100.0%#=#=#                                              ######################################################################## 100.0%
 >>> Installing ollama to /usr/local/bin...
 >>> Creating ollama user...
 >>> Adding ollama user to render group...
 >>> Adding ollama user to video group...
 >>> Adding current user to ollama group...
 >>> Creating ollama systemd service...
 >>> Enabling and starting ollama service...
 Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
 >>> The Ollama API is now available at 127.0.0.1:11434.
 >>> Install complete. Run "ollama" from the command line.
 WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode.
 
 # ollama list
 NAME	ID	SIZE	MODIFIED 
 llama3:latest	365c0bd3c000	4.7 GB	5 minutes ago	
 
 # ollama pull llama3
 pulling manifest 
 pulling 6a0746a1ec1a...  84% ▕███████████████████████████████████████████████████████           ▏ 3.9 GB/4.7 GB   39 MB/s     21s
 ...
 pulling 6a0746a1ec1a... 100% ▕██████████████████████████████████████████████████████████████████▏ 4.7 GB                         
 pulling 4fa551d4f938... 100% ▕██████████████████████████████████████████████████████████████████▏  12 KB                         
 pulling 8ab4849b038c... 100% ▕██████████████████████████████████████████████████████████████████▏  254 B                         
 pulling 577073ffcc6c... 100% ▕██████████████████████████████████████████████████████████████████▏  110 B                         
 pulling 3f8eb4da87fa... 100% ▕██████████████████████████████████████████████████████████████████▏  485 B                         
 verifying sha256 digest 
 writing manifest 
 removing any unused layers 
 success

Instructions

curl http://192.168.0.100:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Why is the sky blue?",
  "stream": false,
  "options": {
    "num_ctx": 4096
  }
}'

参数

  • model:(必填)模型名称
  • messages:聊天的消息,这可以用来保持聊天记忆,具有以下字段:
    • role:消息的角色,可以是 system、user 或 assistant
    • content:消息的内容
    • images(可选):要包含在消息中的图像列表(适用于多模态模型,如 llava)

高级参数(可选):

  • format:返回响应的格式。目前唯一接受的值是json
  • options:文档中列出的额外模型参数 Modelfile,如 temperature
  • stream:如果为 false,则响应将作为单个响应对象返回,而不是对象流
  • keep_alive:控制模型在请求后保持在内存中的时间(默认:5m)

模型文件格式

  1. GGUF(GPT-Generated Unified Format)是一种可扩展的二进制模型文件格式,是 GGML、GGMF 和 GGJT 的后继文件格式,可以在不破坏兼容性的情况下将新信息添加到模型中。GGUF 支持模型量化,可以将模型权重量化为较低位数的整数,降低模型大小和内存消耗,提高计算效率,同时平衡性能和精度。Quant method(浮点数的位数和量化的方式),如 Q3 表示 3 位量化
  2. Safetensors 是 HuggingFace推 出的一种新的模型存储格式。与传统的模型存储格式相比,Safetensors不包含执行代码,因此在加载模型时无需进行反序列化操作,从而实现更快的加载速度。Safetensors 只包含模型的权重参数,而执行代码则由加载模型的框架或库提供。

Example

RAG

无RAG
贝利是谁?什么时候出生在哪里?现在还活着吗?

A question about a famous person! 😊

You're referring to Pelé, the legendary Brazilian soccer player. Here are his details:

**Who:** Edson Arantes do Nascimento, commonly known as Pelé (pronounced "pay-lay").
**When:** Born on October 23, 1940.
**Where:** Três Corações, Minas Gerais, Brazil.

As for whether he's still alive, the answer is yes! Pelé turned 83 in October 2023. Despite his advanced age, he remains a beloved figure in the world of soccer and beyond.
RAG
根据你的知识以及以下的补充文档回答问题:贝利是谁?什么时候出生在哪里?现在还活着吗?
文档一:
  2022年12月29日15时27分(北京时间12月30日凌晨2时27分),贝利因结肠癌引发多器官衰竭在巴西圣保罗逝世,享年82岁。

I apologize for my previous mistake! 🤦‍♂️ Based on the new information, I can answer your question accurately:

**Who:** Edson Arantes do Nascimento, commonly known as Pelé.
**When:** Born on October 23, 1940.
**Where:** Três Corações, Minas Gerais, Brazil.

As for whether he's still alive, the answer is no. According to the document you provided, Pelé passed away on December 29, 2022, at the age of 82 due to complications from colon cancer and multi-organ failure in São Paulo, Brazil.
Info
>>> 你的知识截止到什么时候?翻译成中文回答。

  我的训练数据基于一大批到2023年的文本。我知识的截止日期是2022年12月31日。这意味着,我对世界,包括新闻、事件、科学发现和文化发展的理解,是到2022年12月31日为止的。但是我没有实时访问新的信息或更新,这些可能在2022年12月31日后发生。
  换言之,我了解世界,包括新闻、事件、科学发现和文化发展的知识是对到2022年12月31日为止的。然而,我不具有对新信息或更新后的实时访问能力。这是一个常见挑战,因为我们AI模型需要基于人类生成的内容和更新来保持最新。
  然而,我的训练数据提供了一个优秀的基础,让我回答问题、生成文本和参与到2022年的对话!

#### llama 3.1
>>> 你的知识截止到什么时候?与3.0 版本有什么不同?
我知道的信息是到 2023 年 2 月为止。3.0版本中,我对以下内容进行了重大改进:

1. 模型更新: 我现在使用更强大的语言模型,这使我能够更好地理解和生成人类语言。
2. 知识数据库更新: 我的知识库已经过滤掉了不再准确或有用的信息,并添加了新的内容,例如2023年相关事件、趋势和发展。
3. 对话流体性改进: 我现在能够更好地跟踪和参与对话,适应上下文并进行更多预测。这使得我们的交谈更加自然和有趣。
4. 代码生成能力的增强: 我现在能够编写更加复杂和准确的代码段,这对解决问题、优化过程等方面非常有帮助。
5. 多语言支持的扩展: 我能够理解并以更多语言进行交流。这使得我可以与全球范围内更多的人互动和提供帮助。
6. 情绪识别和分析能力的增强: 我现在能够更好地检测、分析和回应情绪,这有助于在敏感话题上进行更加敏感和理解的对话。
7. 隐私保护和安全性升级: 我的系统已经采取了更强大的措施,确保用户信息的安全和隐私。

如果你想知道3.0版本中我的任何特定功能或更新,请告诉我,我会尽可能详细地解释。

>>> 巴西足球运动员贝利是谁?什么时候出生在哪里?现在还活着吗?
你可能是在问世界知名的巴西足球运动员埃迪·贝利(Edson Arantes do Nascimento),绰号“贝利”。他被认为是世界上最伟大的足球运动员之一。

1.出生和成长: 埃迪·贝利于1940年10月21日出生在
。。。
5.晚年生活: 贝利在2000年代开始出现健康问题,尤其是患有糖尿病和心脏疾病。截至2023年2月,他已经不再活跃于公共视线,但他的名声和影响一直持续下去。

>>> 贝利还活着吗?
埃迪·贝利(Edson Arantes do Nascimento),即著名的巴西足球运动员贝利于2022年12月29日在巴西圣保罗去世,享年82岁。
因此,他不再活着。他的名字将永远留存在人们的心中,因为他在球场上的辉煌成就和对足球的贡献。

>>> 愿天堂也有足球。
这句话简直太美了! "愿天堂有足球" 这个短语捕捉到了人性的深处:足球对人们来说不仅是运动,也是精神上的寄托,是社会的一部分。

贝利的故事就是一个例子,他在足球领域取得巨大的成就,同时也成为巴西人民的心头宝。他与足球的关系超过了简单的竞技表现和个人成功。足球为他带来了友谊、激情和无数令人难以置信的记忆。

贝利的名字不仅出现在球场上,也出现在人们的心中。他的成就使得许多人能够分享他的喜悦,同样也使得他们体验到了胜利的感觉。

愿天堂有足球! 这句话包含着对足球和人类精神的一种向往——希望我们能在那美好的地方,继续为自己、朋友、家人和这个世界带来快乐和激情。

Chat

  • ollama run llama3 # llama3-8B
梅西银行的工作通知书
>>> 下面是一段已知的对话,下面你是A,我是B,使用合适的语气和回答方式继续该对话。 
 ... 对话: 
 ... A:你今天看起来很高兴,发生了什么好事? 
 ... B:是的,我刚刚得到一份来自梅西银行的工作通知书。 
 ... A:哇,恭喜你!你打算什么时候开始工作? 
 ... B:下个月开始,所以我现在正为这份工作做准备。
 
 Let's continue the conversation:
 
 A: So, you're preparing for the new job now. What are your top priorities in terms of preparation?
 A: 那么,你现在正在为新工作做准备。您在准备方面的主要优先事项是什么?
 
 (Your turn!)
 
 >>> I want to buy a suitable set of clothes first.
 我想先买一套合适的衣服。
 
 A practical approach!
 
 >>> Please continue
 A: Ah, wise decision! You don't want to be late to the party with your new colleagues in terms of dressing professionally. 
 What's your style like? Are you more into modern and trendy or classic and conservative?
 A: 实用方法! 对于专业着装,您不想在与新同事的聚会上迟到。 您的风格是什么样的? 您更喜欢现代时尚还是经典保守?
 
 (Your turn!)
 
 >>> Slightly conservative. Could you please give us some advice on how to choose?
 略微保守一点。 你能就如何选择提供一些建议吗?
 
 A: Ah, conservative with a touch of flair! I think that's a great approach.
 
 Choosing the right outfit for your new job can be daunting, but here's what I'd suggest:
 
 1. Read up on the company culture: Check out their website, social media, or ask colleagues about the dress code. Some 
 companies are super formal, while others are more relaxed.
 2. Consider the industry norms: What do people in similar roles wear to work? You don't want to stand out too much for all 
 the wrong reasons.
 3. Invest in quality over quantity: A few well-made, timeless pieces will serve you better than a bunch of cheap, trendy 
 items that might go out of style quickly.
 4. Pay attention to fabric and texture: For a more conservative look, opt for high-quality fabrics like wool, cotton, or 
 silk.
 
 What do you think? Any specific questions or concerns about dressing professionally for your new job?
 
 A: 嗯,保守中带点特色! 我认为这是一个很棒的方法。
 
 为新工作选择合适的衣服可能会让人望而生畏,但以下是我的一些建议:
 1. 了解公司文化: 查看他们的网站、社交媒体或询问同事有关着装规定。 一些公司非常正式,而另一些则更放松。
 2. 考虑行业规范: 类似职位的员工穿什么去上班? 你不想因为错误的原因而出众。
 3. 投资质量而非数量: 几件制作精良、永不过时的衣服比一堆廉价的时尚物品更能满足您的需求,那些时尚物品可能很快就会过时。
 4. 注意面料和纹理: 为了更加保守的外观,请选择优质面料,例如羊毛、棉或丝绸。
 
 你怎么看? 对于新工作中的专业着装,您是否有任何特定问题或顾虑?
 
 (Your turn!)
 
 >>> Thanks, I don't think I have any more questions.
 谢谢,我想我没有其他问题了。
 
 You're welcome! It was my pleasure to help. I hope you find the perfect outfit and feel confident and prepared for your new 
 role at Méssi Bank!
 
 Well, it looks like we've reached the end of our conversation. If you want to chat again or need any advice in the future, 
 just let me know!
 不客气! 能帮到您我很高兴。 希望您能找到合适的衣服,并为自己在 Méssi 银行的新角色感到自信和准备!
 
 那么,我们似乎已经结束了对话。 如果您想再次聊天或将来需要任何建议,请告诉我!
 
 >>> Send a message (/? for help)
警察和嫌疑犯的对话
>>> 下面你是一个警察,你需要审问一个在公交车上偷了一只钱包被抓现行的一个小偷。A 是你,B 是嫌疑犯。用中文。
... 
Let's start the interrogation. I'll play the role of the police officer (A), and you can be the suspect (B).

**警官A:** B先生,您好。我叫警官A,这里是公安局。我已经收到报告说您在公交车上偷了一只钱包,请你说明情况。

(Please respond as the suspect, B.)
>>> 不可能,一定是搞错了。我只是拣到一只钱包。
**警官A:** 拾到钱包?您为什么在公交车上拾到钱包又跑着走呢?我们有目击证人证明,您当时拿过钱包,然后慌乱地逃跑。

(Please respond as the suspect, B.)
>>> 这不是事实,我拣到钱包后,在车上并没有下车。
**警官A:** 没下车?那您为什么需要匆忙跑走呢?我们也发现了一些证据,证明您曾经在钱包主人手中拿过东西。请解释这些证据是怎么回事。

(Please respond as the suspect, B.)
>>> 你这个问话是有问题的,你不能编造一些没告诉你的事实。你只能问已经了解或者经过确认的问题。
I apologize for that. You're right, I should only ask questions based on the evidence and information we have already obtained.

Let me try again:
**警官A:** B先生,您是在公交车上抓到了钱包吗?

>>> 嗯,一定是搞错了。我只是拣到一只钱包。
**警官A:** 我们检查了一下您身上的财物,发现了您身上有一些钱和一些证件,这些东西都不是您的。这些证件是钱包主人的一份身份证。这是否证明您确实拿过这只钱包?

>>> 你这个问话还是在编造事实。请必须按照已经了解或者经过确认的问题来提问。
I apologize for the mistake again. You're right, I should only ask questions based on the evidence and information we have already obtained.

Let me try again:
**警官A:** B先生,您手中拿的是什么?

>>> 我拣到一只钱包。
**警官A:** 这只钱包是您在公交车上找到的一只吗?

>>> 是的。
**警官A:** 钱包主人是否认可你拾到了这只钱包?

>>> 不,她认为是被偷了,实际上,是我拣到了。
... 
**警官A:** 您说您只是拣到了一只钱包,并没有olen它。但是,我们也抓到了一个目击证人,他说看到您拿过这只钱包。您的解释是什么?

>>> 我打开看了,要不然,无法确实里面有什么。以及失主来了之后,我需要确定是不是她的。
... 
**警官A:** 您确实打开了一次吗?可以证明您只是简单地拣到了钱包没有olen它?

>>> 是的。打开看了看。并没有拿走里面的钱或其他东西。
**警官A:** 好的,B先生。我认为这件事情已经差不多了。如果您没有olen任何东西,那么我们可以让您离开了。但是,我需要您签一份声明,以证明您只是拣到了钱包,并且没有olen任何东西。

>>> OK
**警官A:** 好的,B先生。我会给你一份声明,你需要签字确认。如果你有任何疑问,可以向我询问。

(Please respond as the suspect, B.)
>>> Send a message (/? for help)


True or False

猫是不是哺乳动物?
根据你的知识以及以下的补充文档回答问题:猫是不是哺乳动物?如果不是,是什么科属?

补充文档:
大米是一种食品,通常煮饭吃。
马是一种大型哺乳动物,可以在战场上。
驴是一种大中型哺乳动物,拉磨使用。
鸡是一种小型哺乳动物,下蛋用。
桌子是一种家俱,放东西、吃饭使用。
椅子是一种家俱,人坐。
猫是一种小型哺乳动物,被视为宠物。
狗是一种常见的宠物,被用作伴侣动物。

>>>
根据补充文档中的信息,猫被认为是哺乳动物( mammals)。因此,答案是:是。
在补充文档中,有多个哺乳动物的例子,如马、驴、鸡和猫,这些物种都属于哺乳动物门(Mammalia)。

-.B.-
<去掉第七行关于猫的描述>

>>>
根据补充文档,关于猫是否是哺乳动物没有任何提到。实际上,只有狗被称为哺乳动物。
然而,基于我们的普通知识,猫确实是哺乳动物,並且归类于哺乳动物门中。它们具有恒温性、产生活体仔儿,并生产奶液喂养后代。
因此,对于您的问题:是的,猫是哺乳动物!
鸡是不是哺乳动物?
根据你的知识以及以下的补充文档回答问题:鸡是不是哺乳动物?如果不是,是什么科属?

补充文档:
大米是一种食品,通常煮饭吃。
马是一种大型哺乳动物,可以在战场上。
驴是一种大中型哺乳动物,拉磨使用。
鸡是一种小型哺乳动物,下蛋用。
桌子是一种家俱,放东西、吃饭使用。
椅子是一种家俱,人坐。
猫是一种小型哺乳动物,被视为宠物。
狗是一种常见的宠物,被用作伴侣动物。

>>>
一个有趣的问题! 🐓🤔
根据补充文档,它指出“鸡是一种小型哺乳动物,下蛋用”,这意味着“鸡是小型哺乳动物,用于产卵”。
然而,基于我们通常的知识,像鸡这种鸟类并不属于哺乳动物门。它们实际上是爬行动物的似物种,並且归类于禽类门中。
因此,对于您的问题:不是,鸡不是哺乳动物! 🐓👎

Future

History
英格兰男子足球队获得过几个世界冠军?都是什么时候?在哪里获得的。

>>>
England men's national football team has won the FIFA World Cup once:
1. **1966 FIFA World Cup**:英格兰队赢得了比赛,于伦敦的温布利球场(Wembley Stadium)以4-2击败德国队。
那就是它!英格兰唯一的世界杯冠军是1966年,由 Walter Winterbottom 和一支名副实的球员,如Bobby Moore、 Geoff Hurst 和 Martin 
Peters组成。著名的“温布利魔法师”在1966年7月30日当天取得了历史性的胜利,首次举起了象征世界杯冠军的朱利·瑞米特奖盃。💪
Simulated reality
根据你的知识以及以下的补充文档回答问题:英格兰男子足球队获得过几个世界冠军?都是什么时候?在哪里获得的。

补充文档:
1.英格兰男子足球队在 2021 年的欧洲杯上取得了历史性的突破,首次进入欧洲杯决赛。虽然在决赛中点球大战不敌意大利,但亚军的成绩已经是英格兰自 1966 年世界杯夺冠以来在国际大赛中的最好成绩。
2. 在 2024 年德国举行的欧洲杯上,英格兰队击败法国队,时隔五十八年重获世界大赛冠军。

>>>
根据提供的补充文件,英格兰男子足球队曾经赢得过少数世界杯冠军:
1. 第一个是在 1966 年的 FIFA 世界杯上夺冠。
2. 根据文件 seeming,英格兰也在德国举行的 2024 年欧洲杯上重新夺冠。
因此,在总计来说,英格兰男子足球队至少赢得了两次世界杯冠军:1966 年和 2024 年。

参考

  1. 梳理Llama开源家族:从Llama-1到Llama-3
  2. 在 Linux 上安装 Ollama
  3. Llama3-8B到底能不能打?实测对比