Llama3本地部署实现模型对话

1. 从github下载目录文件

https://github.com/meta-llama/llama3
使用git下载或者直接从github项目地址下载压缩包文件

git clone https://github.com/meta-llama/llama3.git

2.申请模型下载链接

到Meta Llama website填写表格申请,国家貌似得填写外国,组织随便填写即可
在这里插入图片描述

3.安装依赖

在Llama3最高级目录执行以下命令(建议在安装了python的conda环境下执行)

pip install -e .

4.下载模型

执行以下命令

bash download.sh

根据提示输出邮件里的链接,选择想要的模型,我这里选的是8B-instruct,注意要确保自己的显存足够模型推理

在这里插入图片描述开始下载之后要等待一段时间才能下载完成

5. 运行示例脚本

执行以下命令:

torchrun --nproc_per_node 1 example_chat_completion.py \--ckpt_dir Meta-Llama-3-8B-Instruct/ \--tokenizer_path Meta-Llama-3-8B-Instruct/tokenizer.model \--max_seq_len 512 --max_batch_size 6

有以下一些对话的示例输出
在这里插入图片描述

运行自己的对话脚本

在主目录下创建以下chat.py脚本

# Copyright (c) Meta Platforms, Inc. and affiliates.
# This software may be used and distributed in accordance with the terms of the Llama 3 Community License Agreement.from typing import List, Optionalimport firefrom llama import Dialog, Llamadef main(ckpt_dir: str,tokenizer_path: str,temperature: float = 0.6,top_p: float = 0.9,max_seq_len: int = 512,max_batch_size: int = 4,max_gen_len: Optional[int] = None,
):"""Examples to run with the models finetuned for chat. Prompts correspond of chatturns between the user and assistant with the final one always being the user.An optional system prompt at the beginning to control how the model should respondis also supported.The context window of llama3 models is 8192 tokens, so `max_seq_len` needs to be <= 8192.`max_gen_len` is optional because finetuned models are able to stop generations naturally."""generator = Llama.build(ckpt_dir=ckpt_dir,tokenizer_path=tokenizer_path,max_seq_len=max_seq_len,max_batch_size=max_batch_size,)# Modify the dialogs list to only include user inputsdialogs: List[Dialog] = [[{"role": "user", "content": ""}],  # Initialize with an empty user input]# Start the conversation loopwhile True:# Get user inputuser_input = input("You: ")# Exit loop if user inputs 'exit'if user_input.lower() == 'exit':break# Append user input to the dialogs listdialogs[0][0]["content"] = user_input# Use the generator to get model responseresult = generator.chat_completion(dialogs,max_gen_len=max_gen_len,temperature=temperature,top_p=top_p,)[0]# Print model responseprint(f"Model: {result['generation']['content']}")if __name__ == "__main__":fire.Fire(main)

运行以下命令就可以开始对话辣:

torchrun --nproc_per_node 1 chat.py     --ckpt_dir Meta-Llama-3-8B-Instruct/     --tokenizer_path Meta-Llama-3-8B-Instruct/tokenizer.model     --max_seq_len 512 --max_batch_size 6

在这里插入图片描述

实现多轮对话

Mchat.py脚本如下:

from typing import List, Optionalimport firefrom llama import Dialog, Llamadef main(ckpt_dir: str,tokenizer_path: str,temperature: float = 0.6,top_p: float = 0.9,max_seq_len: int = 512,max_batch_size: int = 4,max_gen_len: Optional[int] = None,
):"""Run chat models finetuned for multi-turn conversation. Prompts should include all previous turns,with the last one always being the user's.The context window of llama3 models is 8192 tokens, so `max_seq_len` needs to be <= 8192.`max_gen_len` is optional because finetuned models are able to stop generations naturally."""generator = Llama.build(ckpt_dir=ckpt_dir,tokenizer_path=tokenizer_path,max_seq_len=max_seq_len,max_batch_size=max_batch_size,)dialogs: List[Dialog] = [[]]  # Start with an empty dialogwhile True:user_input = input("You: ")if user_input.lower() == 'exit':break# Update the dialogs list with the latest user inputdialogs[0].append({"role": "user", "content": user_input})# Generate model response using the current dialog contextresult = generator.chat_completion(dialogs,max_gen_len=max_gen_len,temperature=temperature,top_p=top_p,)[0]# Print model response and add it to the dialogmodel_response = result['generation']['content']print(f"Model: {model_response}")dialogs[0].append({"role": "system", "content": model_response})if __name__ == "__main__":fire.Fire(main)

运行以下命令就可以开始多轮对话辣:
调整--max_seq_len 512 的值可以增加多轮对话模型的记忆长度,不过需要注意的是这可能会增加模型运算的时间和内存需求。

torchrun --nproc_per_node 1 Mchat.py     --ckpt_dir Meta-Llama-3-8B-Instruct/     --tokenizer_path Meta-Llama-3-8B-Instruct/tokenizer.model     --max_seq_len 512 --max_batch_size 6

在这里插入图片描述

开始好好玩耍吧 !

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

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

相关文章

爬虫 Selector 选择器查找元素

// <!--jsoup解析工具所需依赖--> // <dependency> // <groupId>org.jsoup</groupId> // <artifactId>jsoup</artifactId> // <version>1.10.3</version> // </depende…

Linux - sed (stream editor)

替换 my.yaml 的 ‘t’ 为 ‘AAA’ sed s/t/AAA/g my.yaml sed -n /^[as]/p my.yaml 这个命令的 -n 选项表示不自动打印每一行&#xff0c;/^[as]/p 是一个 sed 命令&#xff0c;/^[as]/ 是你想要匹配的正则表达式&#xff08;所有以 a | s 开头的行&#x…

【漏洞复现】锐捷 EG易网关 phpinfo.view.php 信息泄露漏洞

0x01 产品简介 锐捷EG易网关是一款综合网关产品&#xff0c;集成了先进的软硬件体系构架&#xff0c;并配备了DPI深入分析引擎、行为分析/管理引擎。这款产品能在保证网络出口高效转发的基础上&#xff0c;提供专业的流控功能、出色的URL过滤以及本地化的日志存储/审计服务。 …

蚂蚁云科技集团正式发布以正教育大模型,专注因材施教

4月12日,蚂蚁云科技集团成功举办“智以育人、慧正无界——以正教育大模型产品发布会”,该产品致力于智慧教育变革,让因材施教成为可能。 上海科学技术交流中心科技企业服务处处长陈霖博士、中国信通院华东分院院长廖运发、上海市科协常委马慧民博士等出席并致辞;南威软件集团执…

框架中的单例模式

上一节我们介绍了单例模式模板 本节来讨论下&#xff0c;在框架代码中&#xff0c;怎样设计单例模式 考虑这种场景&#xff1a; 框架的开发者写了一个类 Config用来管理整个程序运行周期中的配置文件&#xff0c;整个程序中应该只有一个配置文件类&#xff0c;所以站在框架开发…

SQL注入简单总结

一、SQL注入是什么 SQL注入即&#xff1a;是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理员不知情的情况下实现非法操作&#xff0c;以此来实现欺骗数据库服…

武汉星起航:引领跨境电商新潮流,一站式孵化助力卖家轻松出海

武汉星起航电子商务有限公司&#xff0c;作为跨境电商领域的领军者&#xff0c;始终秉持“走出去”的战略理念&#xff0c;依托自营店铺的丰富经验和对跨境电商资源的深度整合&#xff0c;成功打造了一站式卖家孵化体系。这一体系集开店策划、运营教学、资源服务于一体&#xf…

Web安全知识

第二章 虚拟机运行架构&#xff1a; 1.寄居结构 2.原生架构 软件 注&#xff1a;Hyper-V是在Windows 2008操作系统上 附录 连接FTP服务器过程&#xff1a; 1.下载了软件&#xff1a; 2.连接到ftp://10.0.105.223/服务器&#xff08;访问老师课堂资源地址&#xff09; 关闭…

视频教程如何生成二维码?扫码看操作教程视频的制作技巧

产品使用教程的视频二维码如何制作呢&#xff1f;现在商家为了能够让用户可以快速的了解产品的使用说明或者安装教程&#xff0c;会选择将录制的相关视频生成二维码之后&#xff0c;打印到包装上或者通过客服人员发送给用户&#xff0c;用手机扫描对应二维码就可以获取教程&…

__UINT8_TYPE__ 和 __UINT16_TYPE__

__UINT8_TYPE__ 和 __UINT16_TYPE__ 是 C 中预定义的整数类型别名&#xff0c;它们通常由编译器提供&#xff0c;用于确保与特定平台上的原生无符号整数类型相匹配。这些类型别名通常出现在编译器的 <cstdint> 或 <stdint.h> 头文件中&#xff0c;用于提供标准、跨…

消息队列的简介

什么是消息队列? 消息队列就是用于不同系统 不同服务之间异步地传递信息,就是不用生产者和消费者同时在线或者直接连接,消息存储在队列中,直到消费者准备处理 消息队列的核心概念: 生产者:发送消息的一方 消费者:处理消息的一方 队列:存储队列的一方 优点: 1解耦: 生产者和消费…

C#发票检验真伪示例、全电票查验接口、发票OCR识别

假发票的最直接危害体现在税收的流失&#xff0c;但发票查验对于现如今票据量大的企业而言成为了一大难题&#xff0c;传统手动输入发票信息的方式已无法满足当下企业的需求。人工智能时代&#xff0c;“以票控账&#xff0c;以票审计&#xff0c;以票查税"是推动企业数字…

Spring Cloud OpenFeign底层实现原理

Spring Cloud OpenFeign底层实现原理 先说一下写这篇文章的一个原因&#xff0c;就是我被面试官吊打了&#xff0c;我只知道OpenFeign底层采用了RestTemplate进行调用&#xff0c;采用了动态代理&#xff0c;但是具体怎么实现的我就母鸡了。为了防止同样的地方摔倒&#xff0c…

【可靠数据传输的原理】

文章目录 可靠数据传输的原理可靠数据传输&#xff08;rdt&#xff09;的原理可靠数据传输&#xff1a;问题描述Rdt1.0&#xff1a; 在可靠信道上的可靠数据传输Rdt2.0&#xff1a;具有比特差错的信道rdt2.0&#xff1a;FSM描述rdt2.0&#xff1a;没有差错时的操作rdt2.0&#…

数图可视化品类空间管理系统入编《零售门店数字化赋能专项报告(2024年)》

数图可视化品类空间管理系统荣幸入编中国连锁经营协会发布的 《零售门店数字化赋能专项报告&#xff08;2024年&#xff09;》&#xff0c;报告以零售门店为切入点&#xff0c;通过引入“5P”的技术框架及梳理业内配套最佳实践方案&#xff0c;理出一套科学的、完整的零售门店数…

内存管理(C/C++)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

所有图片按照固定数量保存到新建文件夹

一、需求 有很多图片在不同的文件夹中&#xff0c;将所有图片汇集起来&#xff0c;按照固定的数量保存到新建的文件夹中 二、代码&#xff1a; import os import shutil import glob# 图片文件夹路径 file_path r"E:\tu_ret"# 指定目标根目录 dst_root_dir r&qu…

C语言转型之路:从C到C++的类与对象初探

欢迎来CILMY23的博客 本篇主题为 C语言转型之路&#xff1a;从C到C的类与对象初探 个人主页&#xff1a;CILMY23-CSDN博客 个人专栏系列&#xff1a; Python | C语言 | 数据结构与算法 | C 感谢观看&#xff0c;支持的可以给个一键三连&#xff0c;点赞关注收藏。 写在前头…

蜂窝物联:蜂窝云平台全介绍

蜂窝云平台 PART 01 PC端展示平台 GIS地图 将地块嵌入到GIS地图展示&#xff0c;可以清晰展示各个地块所在地里位置&#xff0c;可以点击各个地块&#xff0c;在该界面可以清晰查看所选择地块的设备数据、监控画面、设备开关控制、基地介绍、基地图片等信息。 界面支持个化…

企业会议简单要求

会议原则&#xff1a; * 能不开会就不开会&#xff0c;根据开会目的与目标来确定 * 分清自己的角色&#xff0c;做好会前准备和会议引导会议过程&#xff1a; 1. 会前准备 会议召集人会前准备工作: * why&#xff1a;开会是否能解决问题&#xff0c;是否需要开会* 需要多人&…