SSH端口转发
本地转发基本设置假设有一个启动在远程服务器的service,提供了访问的端口号,而本地的电脑想访问这个服务。但是可能由于远程服务器无公网地址等原因,无法直接访问到这个服务。这时候就可以通过配置ssh的端口转发,将访问本地端口的所有请求,转发到对应的远程端口。在建立ssh连接时可以这样写命令:
1ssh -L <远程服务的端口号>:<本地的ip(127.0.0.1)>:<本地的端口号> <user>@<server_ip> -p <port> -N
参数说明:-L: 表示将本地的访问请求,通过本地的端口,转发到远程的端口上。-p: 连接ssh的端口,默认是22。-N: 表示不运行shell,让ssh只充当端口转发的隧道。
保持链接上面的设置非常常用,短期用来调试一下没有问题。但是,如果想要ssh连接保持较长时间运行,不会因为空闲停止,就需要设置ServerAliveInterval参数ssh使其能够keep alive。
1ssh -L <远程服务的端口号>:<本地的ip(127.0.0.1)> ...
白话RAG(二):MemoRAG
1 什么是MemoRAG?MemoRAG,顾名思义就是具有记忆功能的RAG。在传统RAG的工作流上,MemoRAG加入了独特的记忆模块,为后续LLM生成答案提供参考。
2 基本原理下图所谓Memory model,其实就是训练微调了一个小规模的大模型(llama2-7b),去将需要索引的文档知识训练到模型中,然后给出一些clue策略,指导最终答案的生成。
Retriever / Generator也是一个大模型,用于接受提示和小规模大模型生成的clue以及Draft answer,并生成最终的回答。
3 总结MemoRAG将知识训练进一个模型中,创新了RAG的整个工作流。或许提供更多数据训练的条件下,泛化能力有望被提高。
白话RAG(一):GraphRAG
1 GraphRAG到底是什么?GraphRAG是由Microsoft推出的一个基于知识图谱的RAG解决方案。本质上就是综合运用知识图谱中节点、连接关系以及子图的信息构建出来的信息检索方案。
2 Pipeline
2.1 Indexing阶段第一步:源文档划分Chunks第二步:从Chunks中提取实体第三步:实体总结第四步:社区总结第五步:全图总结
2.2 Query阶段第六步:从社区总结中获取社区回答第七步:从社区回答到全局回答
3 优缺点3.1 优点
综合了关键的节点信息,使得模型的回答具备可解释性
3.2 缺点
性能一般,建议多点部署
无法方便地增、删、改知识。如果执行这些操作,需要重建整个知识图谱。此issue正在由团队解决。
4 总结GraphRAG采用了知识图谱来辅助生成回答,极大提高了模型回答的可解释性。但是,这个solution还是需要根据知识图谱生成子社区的文字总结,本质上还是text-based的解法。而且若真的落地,还需考虑性能的问题。
4 相关链接GraphRAG论文:https://arxiv.org/pdf/2404.16130GraphRAG Sur ...
重启我的Blog
读书之后工作了,重拾旧的Blog,总结一些经验。🏃
通过命令行配置Ubuntu源
Ubuntu在国内访问速度过慢,但是国内有众多公司和高校创建的源镜像并提供告诉下载的服务。以华为源为例,本文介绍如何通过命令行的方式更换ubuntu的源,方便更新。
备份原有的配置这是为了防止误操作造成的影响,以便恢复。
1sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
命令行换源很多教程都会推荐使用vim进入sources.list修改,但是这样修改的项目太多。如果要通过命令一键修改,可以参考如下:
12sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.listsudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
更新执行sudo apt-get update,观察是否是从已经修改的源中下载所需的文件。
...
Docker常用命令笔记
创建和启动容器1docker run -it --name=容器名称 镜像名称:标签(版本) /bin/bash
参数说明:
-i:运行容器
-t:运行之后进入一个终端
--name:创建名称
-v:映射宿主机的目录
-d:守护式运行容器,也就是说在容器里面exit,容器不会关闭
-p:映射端口
查看正在运行的docker1docker ps
查看所有容器1docker ps -a
删除特定容器1docker rm container_id
进入特定容器1docker attach container_id(allow part)
注意:attach是进入正在运行的容器
1docker container start container_id(allow part)
运行了上面的命令之后,才能attach进去
复制文件复制宿主机的文件到容器1docker cp 宿主机文件路径 <容器名>:容器存储文件的路径
复制容器的文件到宿主机1docker cp <容器名>:容器存储文件的路径 宿主机文件路径
结论:要复制的文件跟在cp的后面,而且容器不 ...
Ubuntu上管理多版本gcc
上回介绍了多版本CUDA的管理方案。实际上在实现安装不同版本的CUDA之后部署模型时,意外发现了还有不同版本GCC共存的需求。同样,我不想删掉较高版本的GCC,进而寻求解决方案。
准备工作首先查看当前gcc的版本。
1gcc -v
然后查看gcc的安装路径是否已经有其他版本。
1ls /usr/bin/gcc**
未安装多版本之前,我的主机仅有的一个gcc版本号为9,而实际部署需要gcc-8。如果已经满足自己的版本要求,就无需吹毛求疵了。如果不能满足,如版本过低或者过高,就要进行下面的步骤。
安装不同的gcc老规矩在安装或者更新前,先运行
1sudo apt-get update
接着安装gcc-8和g++-8,输入
1sudo apt-get install gcc-8 g++-8
等待片刻即可安装成功。
设置优先级不同于CUDA的自由切换,安装了多个版本的gcc之后,要手动设置优先级,来确定每次使用gcc编译时的版本。而优先级最高的,就是默认使用的gcc。由于当前需要的是gcc-8,不妨把这个的优先级设置高一点。
12sudo update-alternatives --i ...
多个版本的CUDA在Ubuntu上的共存与管理
在Linux系统上,允许某些工具和软件存在多个不同的版本共存,以便满足不同的开发环境需求。因此,学会如何安装和管理这些工具或者软件的方法有时候也很重要。而在实际开发过程中,CUDA的版本五花八门。为了满足特定的开发环境,通常需要装配不同版本的CUDA。
在已经安装了CUDA 11.1的情况下,由于开发部署需要安装CUDA 10.2,而不想舍弃原有的版本,可以这样做。
下载特定版本直接通过搜索引擎找到对应版本的下载地址即可,10.2版本的可见此处。需要注意的是最好选择runfile(.sh)文件,个人认为兼容性较高,出错概率可能会比较低。也可以直接通过下面的命令,自动获取CUDA 10.2的下载包。
1wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
安装进入下载的目录,使用sudo sh命令+该文件目录及其名称,即可运行。需要特别注意的是,当询问CUDA安装的内容时,一定要把Drivers里面的驱动取消选 ...
Tmux最常用的用法
Tmux是一个终端窗口管理工具。当需要长时间运行某个命令或者操作时,如果只是单纯地用终端窗口,难免会出现长时间闲置导致断连,或者网络原因导致进程中断等问题。为了解决这些问题,Tmux创建的终端会话支持后台运行命令,而且可以随时调出,方便监控。本文整理了作者常用的相关方法。
启动Tmux1tmux new -s session_name
这样便启动了一个Tmux的Session终端。而平时为了贪图方便,直接在终端窗口输入tmux也未尝不可,但是长远来说不建议养成这样的习惯。没有名字的Session,可能会增加运维成本。
切换session会话分离输入启动命令后,将会自动跳转到创建的Session。当我们完成会话中命令的输入,想要切换回原来的终端窗口页面,习惯的做法是:
首先按下Ctrl+B。这一步按下的按键叫做前缀键,执行快捷命令前都需要按下。
然后按下D。这是分离会话的快捷键,意思为“Detach”。
这样做是因为我在开发深度学习模型的时候,往往需要一个专门的Session监控输出,而在输出状态下,是没有办法输入tmux相关命令的。所以,快捷键成为了一种理想的方式。
在Sessi ...
OCR论文阅读笔记之Mask TextSpotter v3
Mask TextSpotter v3论文地址:https://arxiv.org/abs/2007.09482GitHub仓库:https://github.com/MhLiao/MaskTextSpotterV3
了解更多Mask TextSpotter:v1论文地址:https://arxiv.org/abs/1807.02242v2论文地址:https://arxiv.org/abs/1908.08207
基本信息论文名称:Mask TextSpotter v3: Segmentation Proposal Network for Robust Scene Text Spotting
发行年份:2020
会议名称:ECCV (European Conference on Computer Vision)
应用场景:场景文本识别
主要内容:与Mask TextSpotter v2相比,v3采用了SPN(Segmentation Proposal Network, 分割候选网络)替代Region Proposal Network (RPN, 区域生成网络),来生成候选多边形 ...