0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

大语言模型的两种运行方法

麦辣鸡腿堡 来源:古月居 作者:叶夏 2023-11-20 15:52 次阅读

运行

安装上面的步骤,到这里就全部安装好了,体验LLM有两种方式,一个是直接在shell窗口中以聊天的方式使用,还有一个是通过topic的订阅和发布来使用,前者适合体验,后者适用于实际开发中。

1. 以聊天窗口运行

新开一个shell窗口,执行以下命令:

source /opt/tros/setup.bash
ros2 run hobot_llm hobot_llm_chat

下面是我的实际执行情况:

root@ubuntu:~# source /opt/tros/setup.bash
root@ubuntu:~# ros2 run hobot_llm hobot_llm_chat
[EasyDNN]: EasyDNN version = 1.6.1_(1.18.6 DNN)
[BPU_PLAT]BPU Platform Version(1.3.3)!
[HBRT] set log level as 0. version = 3.15.25.0
[DNN] Runtime version = 1.18.6_(3.15.25 HBRT)
[A][DNN][packed_model.cpp:234][Model](2023-10-28,13:22:15.818.513) [HorizonRT] The model builder version = 1.20.1
[A][DNN][packed_model.cpp:234][Model](2023-10-28,13:22:31.97.703) [HorizonRT] The model builder version = 1.20.1
[A][DNN][packed_model.cpp:234][Model](2023-10-28,13:22:48.727.231) [HorizonRT] The model builder version = 1.20.1
[A][DNN][packed_model.cpp:234][Model](2023-10-28,13:23:06.393.996) [HorizonRT] The model builder version = 1.20.1
[A][DNN][packed_model.cpp:234][Model](2023-10-28,13:23:24.4.230) [HorizonRT] The model builder version = 1.20.1
[A][DNN][packed_model.cpp:234][Model](2023-10-28,13:23:31.997.90) [HorizonRT] The model builder version = 1.20.1
None of PyTorch, TensorFlow >= 2.0, or Flax have been found. Models won't be available and only tokenizers, configuration and file/data utilities can be used.
这是一个地平线RDK平台大模型聊天程序,请输入你的问题并按下回车,如需重新开始请输入reset,如需退出请输入exit
> >> 用户:

可以看到最后已经可以在shell窗口中进行聊天了

下面几段内容是我跟这个LLM实际对话的过程,还是挺有意思的,可以仔细看一下

>> > 用户:介绍一下自己
 >> > 机器人:我是一名AI语言模型,可以回答各种问题。我能够理解并回答各种语言问题,包括中文、英文、法语、德语、日语、韩语、俄语、西班牙语、中文等。我能够处理各种类型的问题,包括事实、情感、逻辑、问题答案等。我能够根据用户输入的问题进行回答,并提供相关信息和建议。我是一台智能机器,可以不断学习和进步。我能够帮助用户解决各种问题,提供帮助和
 >> > 用户:你现在是一名机器人开发工程师 ,请你完成我给你的任务
 >> > 机器人:好的!我会尽力完成您的任务。请问您的任务是什么呢?
 >> > 用户:ros2 topic pub --once /text_query std_msgs/msg/String "{data: ""中国的首都是哪里""}"   ;这是 一行ros2中想一个topic发布消息的命令,请你改写成Python代码
 >> > 机器人:好的!请看以下Python代码:```pythonimport reimport stringprint("

这段对话里面,一开始的自我介绍还是挺好的,很有调理,也挺“拟人”的。

后面我希望它充当一个机器人开发工程师并给出一个实际任务的时候,它也有尝试回答,但是没有回答完整,看起来像是上下文达到了限制,被终止了

下面是第二段对话

用户:中国的首都在哪里?

机器人:北京。

用户:安徽的省会在哪里

机器人:安徽的省会位于六安市。

用户:中国的首都在哪里?请你把这句话翻译成英文

机器人:What is the capital of the Chinese People's Republic?

用户:你觉得你翻译的准确 吗?

机器人:The capital of the Chinese People's Republic is Beijing.

我先是问中国首都在哪里,这个问题回答是正确的,但是问到安徽的省会的时候就开始“瞎编”了,

后面让它翻译“中国的首都在哪里?”这句话,应该用where问句还是不what问句。

总得来说,目前情况下,不能指望这个LLM充当生产力工具,只能当一个玩具,但是,随着算法硬件的发展,不久的将来,很可能出现这种可以在端侧部署和运行且效果很好的大模型,到时候真的就是人手一个大模型了。

2. 通过topic订阅来运行

前面提到过hobot_llm有可以通过topic订阅和发布的方式来使用,我这里给出Python通过topic订阅和发布的代码:

发布消息的代码:

import rclpy
from std_msgs.msg import String


def main():
    # 初始化ROS节点
    rclpy.init()


    # 创建一个节点,节点名为"simple_publisher"
    node = rclpy.create_node('simple_publisher')


    # 创建publisher, 指定主题名称为"/text_query", 数据类型为std_msgs/String,队列长度为10
    publisher = node.create_publisher(String, '/text_query', 10)


    # 准备要发送的数据
    msg = String()
    msg.data = "中国的首都是哪里"


    # 发布该数据
    publisher.publish(msg)


    # 清理并关闭节点
    node.destroy_node()
    rclpy.shutdown()


if __name__ == '__main__':
    main()

订阅的代码:

import rclpy
from std_msgs.msg import String


def callback(msg):
    print('Received message: "%s"' % msg.data)


def main():
    # 初始化ROS节点
    rclpy.init()


    # 创建一个节点,节点名为"simple_subscriber"
    node = rclpy.create_node('simple_subscriber')


    # 创建subscriber, 指定主题名称为"/text_result", 数据类型为std_msgs/String,并绑定回调函数callback
    subscriber = node.create_subscription(String, '/text_result', callback, 10)


    # 在 ROS 内部循环处理消息,并等待新消息到来
    rclpy.spin(node)


    # 清理并关闭节点
    node.destroy_node()
    rclpy.shutdown()


if __name__ == '__main__':
    main()
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6559

    浏览量

    87938
  • LLM
    LLM
    +关注

    关注

    0

    文章

    221

    浏览量

    252
收藏 人收藏

    评论

    相关推荐

    【大语言模型:原理与工程实践】大语言模型的基础技术

    语义学习的起点是研究如何将词转化为向量表示,这一直是自然语言处理领域的研究热点。词表示方法主要分为三:词的独热表示、词的分布式表示和基于预训练的词嵌入表示。 词的独热表示:构建包含所有词的词表V,独
    发表于 05-05 12:17

    【大语言模型:原理与工程实践】大语言模型的应用

    丹尼尔·卡尼曼在《思考,快与慢》中提出了著名的“系统1与系统2”理论。该理论指出,人类大脑的决策系统存在两种模式:一是快速的、感性的系统1,它帮助我们处理简单的决策;另一是缓慢的、理性的系统2
    发表于 05-07 17:21

    电池电量的两种测试方法

    电池电量的两种测试方法检测普通锌锰干电池的电量是否充足,通常有两种方法。第一种方法是通过测量电池瞬时短路电流来估算电池的内阻,进而判断电池电量是否充足;第二
    发表于 04-18 09:35

    两种verilog语言写法的实现问题!求解答~

    在看verilog代码时,看到这样两种表示方法:一是:“ wirea;assigna=b;”一是:“wirea=b;”请教各位大神这两种
    发表于 01-29 14:33

    请问这两种机械手模型哪种实验性能更好,可扩展性更好

    `我打算买个六轴机械手模型用来验证自动运行算法,但不知道从机械角度上来来说哪种实验性能更好,可扩展性更好,这两种都是数字舵机带动的。麻烦给出为什么的理由,谢谢!左上角那种好像是工业机械手的模型
    发表于 07-15 17:00

    突然发现有两种电压源和电流源等效模型

    今天看书才发现有两种电压源电流源等效变换, 之前一直没注意. 1. 我以前一直是 电压源和电阻串联, 电流源和电阻并联的模型. 这可以解释得通 I*R = U2. 今天发现高频书上是 电流源和电导
    发表于 03-14 14:31

    SQL语句的两种嵌套方式

    一般情况下,SQL语句是嵌套在宿主语言(如C语言)中的。有两种嵌套方式:1.调用层接口(CLI):提供一些库,库中的函数和方法实现SQL的调用2.直接嵌套SQL:在代码中嵌套SQL语句
    发表于 05-23 08:51

    两种使用C#实现ADSL自动拨号的方法

    在网络编程中,有时候会需要重新拨号建立网络连接(如Ad点击软件通过重新拨号形成有效点击) ,下面介绍两种程序中拨号的方法.
    发表于 07-12 06:33

    两种建立元件3D图形的方法

    使用 Altium Desinger绘制的PCB封装默认情况下为平面,也就是将其切换到 3D 视图时,只能看到的是封装的形状,并不是元件的外观,这里给大家介绍两种建立元件3D图形的方法,一是通过 Altium Designer
    发表于 07-12 07:37

    两种图形嵌入方法有什么优缺点?

    基于COM组件的Matlab与C++混合编程方式因拥有独立的运行环境和两种语言的互补优势而被众多科研人员和编程人员所接受,同时也是MathWorks公司推荐使用的混编方式。
    发表于 08-19 07:19

    了解实际电源的两种模型及其等效变换

    。 2 .了解实际电源的两种模型及其等效变换。 3 .了解非线性电阻元件的伏安特性和静态电阻、动态电阻的概念以及简单的非线性电阻电路的图解分析法。第1章电路的分析方法、1.3.3电压源和电流源的等效变换、图...
    发表于 09-06 07:57

    请问C语言两种引用头文件方式的区别是什么?

    请问C语言两种引用头文件方式的区别是什么?
    发表于 10-15 07:36

    掌握原理图输入以及Verilog的两种设计方法

    过1位全加器的详细设计,掌握原理图输入以及Verilog的两种设计方法
    发表于 11-08 07:57

    SQL语言两种使用方式

    SQL语言两种使用方式在终端交互方式下使用,称为交互式SQL嵌入在高级语言的程序中使用,称为嵌入式SQL―高级语言如C、Java等,称为宿主语言
    发表于 12-20 06:51

    1.3 两种运行 Python 程序方法

    1.3 两种运行 Python 程序方法节我们安装好了 CPython 解释器,有了解释器,就可以运行 Python 程序了。Pytho
    发表于 02-16 18:31