- 博客(73)
- 资源 (11)
- 收藏
- 关注
原创 进阶岛 - 茴香豆:企业级知识问答工具实践闯关任务
茴香豆是由书生·浦语团队开发的一款开源、专门针对国内企业级使用场景设计并优化的知识问答工具。在基础 RAG 课程中我们了解到,RAG 可以有效的帮助提高 LLM 知识检索的相关性、实时性,同时避免 LLM 训练带来的巨大成本。在实际的生产和生活环境需求,对 RAG 系统的开发、部署和调优的挑战更大,如需要解决群应答、能够无关问题拒答、多渠道应答、更高的安全性挑战。因此,根据大量国内用户的实际需求,总结出了三阶段Pipeline的茴香豆知识问答助手架构,帮助企业级用户可以快速上手安装部署。茴香豆特点。
2024-08-26 00:26:39 773
原创 进阶岛 - MindSearch(CPU版)部署到github codespace
github codespace很好用,丝滑、快速huggingface的space管理代码也很好用,自动编译、容器打包、发布一气呵成mindsearch很好用,效果超出预想。planner和searcher的交互丝滑、有效率。mindsearch内置搜索可解决很多通用问题,让agent的外挂API可以聚焦特定场景不重复造轮子效果于远远超出以前试用的各种开源Agent,具备实用价值。
2024-08-23 12:27:29 886
原创 进阶岛 - InternVL 多模态模型部署微调实践
InternVL 是一种用于多模态任务的深度学习模型,旨在处理和理解多种类型的数据输入,如图像和文本。它结合了视觉和语言模型,能够执行复杂的跨模态任务,比如图文匹配、图像描述生成等。通过整合视觉特征和语言信息,InternVL 可以在多模态领域取得更好的表现。
2024-08-22 14:31:32 834
原创 进阶岛 - LMDeploy 量化部署进阶实践
注释:实验室提供的环境为虚拟化的显存,nvidia-smi是NVIDIA GPU驱动程序的一部分,用于显示NVIDIA GPU的当前状态,故当前环境只能看80GB单卡 A100 显存使用情况,无法观测虚拟化后30%或50%A100等的显存情况。也就是说,虽然使用的显存相同,但是cache可以容纳的kv数却多了4倍。让我们回到LMDeploy,在最新的版本中,LMDeploy使用的是AWQ算法,能够实现模型的4bit权重量化。也就是说,这个量化指的是cache中保存的数据量化,而不是模型权重的量化。
2024-08-17 23:02:22 622
原创 进阶岛 - 使用Lagent 自定义实现Agent 智能体
作为LLM的应用发展方向,Agent的应用潜力非常大Lagent是一个agent开发框架,可以快速的构筑agent应用Lagent已预置强有力的工具:搜索、地图、Python解释器参考官方例开发天气查询功能(高德API),让LLM获取实时天气信息,验证Agent开发外挂API的流程通过@tool_api注解,利用Python的注释即可自动将API的信息注入给LLM,非常方便验证效果相当好:可精确识别关键字并传递给agent的外挂API,并正确识别和组织返回信息(见文末)
2024-08-16 00:02:58 1081
原创 基础岛 - OpenCompass 评测 InternLM-1.8B 实践
遗憾的是,装完了才发现有opencompass/requirements/runtime.txt文件存在,直接就能依赖包安装好。在 OpenCompass 中评估一个模型通常包括以下几个阶段:配置 -> 推理 -> 评估 -> 可视化。查看ceval的评测数据,每个文件夹内都是csv文件,涉及不同领域,共有55个csv文件。最终结果会把每个csv(领域)的评测结果都打印出来,还有6个平均值。程序启动后,会依次将所有55个csv都走一遍推理流程。漫长的执行,用了1581.46秒。
2024-08-09 18:11:38 580
原创 基础岛 - 使用XTuner微调internLM1.8B模型的实践
XTuner是低成本大模型训练工具箱,也是internLM全链条工具链中,微调工具的一环。XTuner支持与书生·浦语(InternLM)、Llama等多款开源大模型的适配,可执行增量预训练、指令微调、工具类指令微调等任务类型。硬件要求上,开发者最低使用消费级显卡便可进行训练,实现大模型特定需求能力。
2024-08-09 14:11:09 827
原创 基础岛 - llamaindex+Internlm2实现RAG实践
RAG流行的一个重要原因是目前的LLM所能支持的上下文token数是受限的,不能把所有信息一起扔给LLM,所以要经过检索过程的把背景信息精选、精筛,借此提高回答的正确性。但如果上下文窗口超长,已经足够把几百个文档一股脑的塞入到大模型对话的窗口,并能完美的在其中检索到事实知识,那么还有必要做任何形式的外部索引与检索,来给大模型提供知识“外挂”(RAG)吗?第一种方式,改变了模型的权重即进行模型训练,这是一件代价比较大的事情,大语言模型具体的训练过程,可以参考。给模型注入新知识的方式,可以简单分为几种方式,
2024-08-08 14:21:31 884
原创 基础岛 - 浦语提示词工程实践
LangGPT框架参考了面向对象程序设计的思想,设计为基于角色的双层结构,一个完整的提示词包含模块-内部元素两级,模块表示要求或提示LLM的方面,例如:背景信息、建议、约束等。内部元素为模块的组成部分,是归属某一方面的具体要求或辅助信息,分为赋值型和方法型。的简称,中文名为结构化提示词。LangGPT 是一个帮助你编写高质量提示词的工具,理论基础是我们提出的一套模块化、标准化的提示词编写方法论——结构化提示词。Prompt-> Modules -> Internal Elements(内部元素)
2024-08-07 16:31:24 935
原创 基础岛 - 8G显存验证书生·浦语大模型的Demo
因为以前用过LMDeploy,所以本章的内容相对熟悉。另外,因为教程写的很详细保姆级,所以大多数情况直接复制执行命令即可。开发机的创建略过。
2024-08-06 18:26:38 832
原创 入门岛 - InternLM基础知识
请实现一个wordcount函数,统计英文字符串中每个单词出现的次数。返回一个字典,key为单词,value为对应单词出现的次数。
2024-07-10 16:37:23 193
原创 使用TerraScan静态扫描Kubernets&IaC文件
terrascan的基本原理是,通过内置的策略,对目标进行扫描。使用前需要下载策略库,而策略库是经常更新的。类似于扫描病毒需要下载病毒库。可见IaC中常用的Cfn,Terraform,以及容器领域的K8S,Helm,Kustomize,Dockerfile都有支持,init:下载策略库,即从策略库仓库 git clone到本地$HOME/.terrascan目录。初次执行时,先从github上下载对应的策略库,并根据策略库的要求检查目标文件。一个产品搞定,不需要再部署其他的工具,简化了CICD的设计。
2024-05-15 16:20:20 1096
原创 使用 telepresence 在本地调试Kubernetes中的服务
telepresence 是一个工具,用于简化本地开发和调试服务的过程,同时可以将服务代理到远程 Kubernetes 集群。telepresence 允许你使用自定义工具(例如调试器和 IDE)调试本地服务, 并能够让此服务完全访问 ConfigMap、Secret 和远程集群上运行的服务。被调试的服务可以正常和集群中的其他服务进行通信(被访问和访问其他服务都可以)。
2024-05-14 16:26:21 975 2
原创 STM8L 简单按键复用处理(短按、长按)
文章目录前言一、实现原理二、使用步骤1.按键中断初始化2.定时器操作3. 中断处理总结前言开发中经常遇到按键数很少,却要实现多种类型触发功能的场合,比如短按、长按、双击等等,即所谓按键复用。一般情况下,都是在中断函数中收到终端,做延时判断、防抖等处理。但中断处理不能太久,所以稍微好一些的实现,基本是用定时器来扫描处理。关于这个按键复用功能,ESP的一个项目esp-iot-solution中,有一个非常棒的实现,大家可以参考。本文描述的是一个简单实现方法,简洁易用。一、实现原理为减少中
2021-10-22 13:34:54 1686
原创 使用STM8L的硬件I2C(四)硬件I2C的使用注意
使用STM8L的硬件I2C(四)硬件I2C的使用注意使用STM8L的硬件I2C时,有几个点要注意:I2C的初始化时钟的使能操作必须在其他I2C设置之前,否则设置不生效CLK_PeripheralClockConfig(CLK_Peripheral_I2C1, ENABLE);Slave地址的设置这一点让人困扰,花了不少时间才搞清楚。是因为标准库函数I2C_Send7bitAddress()并不会帮助你左移。这个左移动作必须由用户完成,如下:I2C1, _i2c_dev.addr
2021-01-17 21:28:15 1067
原创 使用STM8L的硬件I2C(三)硬件I2C的中断读写处理
STM8L的硬件I2C(三)硬件I2C中断读写1、I2C初始化关于I2C初始化的流程,标准库中的注释写的非常清晰: * 1. Enable peripheral clock using CLK_PeripheralClockConfig(CLK_Peripheral_I2Cx, * ENABLE) function (Refer to the product datasheet for the available I2C * p
2021-01-15 22:40:28 6148 1
原创 使用STM8L的硬件I2C(二)硬件I2C的事件和检测
STM8L的硬件I2C(二)硬件I2C的事件和检测1、STM8L STD库对I2C状态的定义I2C有Master写、Master读、Slave写、Slave读4种模式。直接寄存器编程当然可以,不过必须吃透Reference手册,而且代码不直观,不易理解。STD标准库对这四种方式做了抽象,对通信的各阶段都定义了状态进行指示,从而使得使用逻辑更直观易懂。下面以Master读写为例进行介绍:Master写流程:Master读流程:2.EV状态的定义上述抽象出的各种状态(EV1-
2021-01-13 22:54:07 2124
原创 使用STM8L的硬件I2C(一)硬件I2C简介
STM8L的硬件I2C(一)硬件I2C简介和使用方法的选择I2C是常用的外设协议,用途广泛。很多时候为了实现简单,在STM8上大家都是用GPIO来模拟I2C工作。STM8L自带硬件I2C,不过相对于模拟I2C的清晰简单,硬件I2C的处理要麻烦一些。一是必须要理解各寄存器用法,二是使用STD库时还须理解STD抽象出的I2C接口和使用逻辑。模拟I2C一般情况下使用问题不大,但若同时要处理其他外设或者对延时有要求,模拟方法就力不从心,如使用硬件I2C,就可以采用中断处理解决。1、I2C协议回顾
2021-01-08 22:33:40 2481 1
原创 awk 常用方法
awk's usageawk -F "spearator" '[BEGIN {}] [{}] [END {}]' file1 file2 *.txtexample#---- Sperator -----00. awk '{print $1}' info.txt01. awk -F ";" '{print $0}' info.txt02. awk -F "[,/t]" '{print $2, $3}' info.txt03. awk -F "[,/t]" '{if( $1 > 1.
2020-10-10 12:27:49 275
原创 使用C++/CLI开发自动获取Windows锁屏壁纸的小工具
使用C++/CLI开发Windows锁屏壁纸小工具Windows锁屏壁纸C++/CLI锁屏壁纸的获取方法C++/CLI实现抓取锁屏壁纸工具代码界面说明zip下载Windows锁屏壁纸Windows10目前都会默认使用锁屏壁纸,有时候会有喜欢的图片出现,虽然可以手工保存下来,但是步骤繁琐,操作非常麻烦。C++/CLIC++/CLI作为托管C++的升级,本就是比较生僻、少有人用的技术,随着它的...
2019-11-13 17:52:09 824 2
原创 使用STM32CubeIDE移植腾讯物联网OS TencentTiny-OS
使用STM32CubeIDE移植TencentTiny-OS到STM32103C8使用TrueStudio移植TencentTiny-OS到STM32103C8**前言概要****链接****一、STM32CubeMX生成工程****二、STM32CubeIDE工程设置和移植代码修改****三、编译工程和调试****四、代码下载**使用TrueStudio移植TencentTiny-OS到STM...
2019-10-15 15:12:05 1999
原创 Subversion配置http访问的1个注意点
在CentOS服务器上配有一个SVN,环境中有SVN自有协议和HTTP协议配置了同时访问,SVN协议是大家都了解的passwd(配置用户信息)和authz(配置组信息和访问权限)文件,HTTP则使用LDAP来访问用户信息。因为LDAP管理略有不便,所以打算将HTTP切换成和SVN的passwd的相同用户表。但是却总是无法成功,总是反复提示重新填写帐号,apache的日志里则提示Not fo...
2019-02-28 16:41:21 582
原创 STM8S UART串口使用中断收发数据
标题STM8S UART串口使用原来调过STM8L的串口,逻辑简单,中断清晰,换成STM8S105K4后,虽然也是用STD库,除去函数名、宏名等语言层面的差异以外,中断处理方面也颇有些不一样的地方,特此记之。和此篇结构相同,也是中断异步模式,但为调用方便起见,在调用层面改为同步。STM8S105K指定RX为PD6,RX为PD5。读写缓冲和标识值定义#define UART_BUF_...
2018-11-07 17:46:50 14303 8
原创 11. ESP8266使用Mongoose-os的体验2 - 【Advanced JavaScript】开发
关于本文在【8. ESP8266使用Mongoose-os初体验(使用bh1750传感器)】中,已经简单介绍过在mongoose-os中利用mjs进行开发,不得不说,的确是便捷方便。但是需要认识到,mjs只是为了提高效率、降低开发而加入的javascript的接口层,语法糖,其核心部分依然是C的实现,mjs中的大量接口都是通过ffi直接映射C接口而来。目前,用mjs完全可以做到iot的开发,但...
2018-10-10 00:12:53 1897 3
原创 STM8L EEPROM DATA数据读写
一、概要 STM8系列一般拥有如下几种三种数据区用户启动区域(UBC)数据EEPROM(DATA)主程序区选项字节(Option byte)用户启动区域(UBC)包含有复位和中断向量表,它可用于存储IAP及通讯程序; 数据EEPROM(DATA)区域可用于存储用户具体项目所需的数据; 主程序区是指在FLASH程序存储器中用于存储应用代码的区域; 选项字节用于配置硬件特性和...
2018-07-13 18:28:49 7524 3
原创 STM8L 简单定时器使用
STM8L中有多个定时器,TIM1最高级,其他都是普通定时器,一般情况下也够用。最简单的示例初始化 // TIM3时钟使能 CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, ENABLE); // 默认初始化 TIM3_DeInit(); // 最主要处理:设置计数(延时时间)
2018-01-17 10:51:38 4207 2
原创 STM8L USART串口使用
USART串口使用STM8L上有多个串口,最多可达5个,分别为USART1~USART5,但依据型号不同,搭载数量并不相同。 以STM8L052R8为例,其只具有USART1~USART3。 因为STM8系列功能众多,很多Pin都是复用的,因此使用前必须检查STML的参考手册。 通过手册可知,以USART1为例,RX/TX可以使用以下的管脚,默认是PC2/PC3, 如果要变更,需要修改
2018-01-17 10:34:32 10815 8
原创 STML8的中断使用小结
STM8L的中断,有两种模式,分别为Pin模式和Port模式,也就是所谓线中断和端口中断。 简而言之,线中断是指所有寄存器组的同一管脚Pin的中断都使用同一中断号, 端口中断是指同一个或多个寄存器组的所有管径Pin的中断使用同一中断号。 举例而言, 所有Port A/B/C/D/E的Pin1的中断都是EXTI1, Port B 和Port G的所有Pin的中断都是EXTIB/G实现方
2018-01-04 16:21:44 6051 4
原创 10. ESP8266通过OTA更新固件的实践
1. OTA是什么 OTA(Over The Air),通常也称为FOTA(Firmware Over The Air),意思是硬件中的固件通过无线升级版本。众所周知,硬件固件的部署,以及固件版本升级很麻烦的,很多时候得通过人工完成,成本很高。所以OTA是一个颇为实用、实惠的功能。 手环等设备,其实也有这类问题,一般都是通过APP升级-> ->蓝牙固件升级的方式。2. 乐鑫对OTA的
2017-07-26 14:02:34 13715 3
原创 VIM高阶实用技巧
也许是Vim的帮助已经很详细,关于VIM的书籍比较少, 这本【Practical Vim】,中文译名【Vim实用技巧】(书名太朴实)中描述了很多技巧和思路, 对有一定经验的Vim使用者而言,是非常好的提高资料。文本对象操作di( di) dib 删除内含 ‘(’ ‘)’ 块, 保留括号da( da) dab 删除一个 ‘(’ ‘)’ 块di{ di} diB 删除内含 ‘{’ ‘}’
2017-07-21 20:28:19 1122
原创 9. ESP8266使用esp-open-rtos的实践
一、esp-open-rtos概要Esp-open-rtos是开源的、基于freertos的、用于ESP8266固件的开发支持环境。最早是从乐鑫官方的ESP8266_RTOS_SDK基础上fork而来,但是目前的代码、框架已经和原SDK相去甚远,有了大幅的变化。从代码结构、编译方法、支撑库等均有不同,而且内置了更多的常见传感器驱动,以及MQTT、TLS、甚至OTA等常用的功能模块。相比官方同样的RT
2017-07-15 23:42:46 10665 8
原创 8. ESP8266使用Mongoose-os初体验(使用bh1750传感器)
随着ESP8266的流行,基于ESP8266的FW发展也愈发兴旺,除了乐鑫原厂的AT、RTOS固件外,为促进IoT开发的效率,尤其是原型开发,基于各种脚本、动态语言的固件越来越受到欢迎。比如,nodemcu支持lua,各种micro python的固件,各种javascript固件等。Mongoose-os是一个基于javascript的固件和IDE环境,其支持ESP8266、ESP32、以及CC3
2017-07-05 22:55:01 7108 3
原创 7. NodeMCU上使用RTOS固件读取bh1750传感器数据的实践
NodeMCU上使用RTOS固件读取bh1750传感器数据的实践本文主要是尝试在NodeMCU上,使用RTOS来控制bh1750光照传感器,以获取亮度数据。关于RTOS固件的编译环境和编译方式的介绍,可参照之前的文章。 ESP8266固件的编译5(RTOS SDK固件)其实nodeMCU自身的原生lua固件是非常好用的,预置了相当多的传感器驱动, 使用过程非常便利,调试也容易。nodeMCU对B
2017-06-25 20:09:20 4645 1
原创 6. ESP8266固件的下载
ESP8266固件的编译6(固件的下载)固件下载工具有很多,有nodemcu提供的flasher,也有pytool,为了参照资料方便起见,使用乐鑫官方的FLASH_DOWNLOAD_TOOLS比较方便。 可以在乐鑫官方网站找到它,目前的最新版本是3.4.8. (http://www.espressif.com/sites/default/files/tools/flash_download_to
2017-06-25 18:32:10 10864 2
原创 4. ESP8266固件的编译(NONOS SDK固件 AT固件)
AT固件编译 应用广泛的AT固件是基于Non-OS SDK开发的, 为简单起见,这里编译的是Non-FOTA类型的固件, 通常也称Eagle固件。1) 在NONOS目录下新建app目录,将examples/at下所有文件复制到该目录下 2) 因无须开启FOTA,所以AT升级功能并不必要,修改include/user_config.h文件 注释掉AT_CUSTOM_UPG
2017-05-21 15:44:53 6216 2
在Kubernets下部署RAP2用HelmChart
2022-07-08
Windows10自动抓取锁屏壁纸工具
2019-11-13
TencentOS-tiny-STMF103.zip
2019-10-15
ESP8266 AT固件 (20170521编译)
2017-07-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人