eBPF核心技术与实战
0 参考资料0.1 知识图
eBPF系统知识
eBPF学习路径
0.2 代码地址https://github.com/feiskyer/ebpf-apps
1 eBPF工作原理1.1 eBPF 的发展历程eBPF 的诞生是 BPF 技术的一个转折点,使得 BPF 不再仅限于网络栈,而是成为内核的一个顶级子系统。在内核发展的同时,eBPF 繁荣的生态也进一步促进了 eBPF 的蓬勃发展。这其中,最典型的就是 iovisor 带来的 BCC、bpftrace 等工具,成为 eBPF 在跟踪和排错领域的最佳实践。由于 eBPF 无需修改内核源码和重新编译内核就可以扩展内核的功能,Cilium、Katran、Falco 等一系列基于 eBPF 优化网络和安全的开源项目也逐步诞生。并且,越来越多的开源和商业解决方案开始借助 eBPF,优化其网络、安全以及观测的性能。比如,最流行的网络解决方案之一 Calico,就在最近的版本中引入了 eBPF 数据面网络,大大提升了网络的性能。
eBPF发展历程
1.2 eBPF 是怎么工作的?eBPF 程序并不像常规的线程那样,启动后就一直运行 ...
10 - 大模型RAG进阶实战营
0 参考资料代码仓库:https://github.com/huangjia2019/rag-in-action
13 评估RAG系统13.1 RAG系统评估RAG 的系统评估分为检索评估和响应评估:
对检索器的评估 包含一定的主观因素,但仍可以采用信息检索领域的一些指标来进行衡量,例如 准确率(Precision)、召回率(Recall)和  排名准确度等。
生成器的评估(也称为“响应评估”,实际上是针对RAG系统给出的最终结果进行的整体评估)则更加复杂。它不仅要求验证生成的答案是否基于事实(即与上下文相关),以及是否有效地回答了用户的问题(即与查询相关),还需要判断答案是否流畅、安全且符合人类价值观。为了评估生成内容的质量,会结合使用定量指标(如 BLEU 或 ROUGE)和定性指标(如 回答的相关性、语义一致性、语境契合度、扎实性及忠实度)。鉴于这些因素的复杂性,还需要依赖人类的主观评价来辅助完成整个评估过程。
RAG 的评估三角:上下文关联:针对 Query 进行检索,评估检索后结果的准确性响应忠实度:LLM 基于 检索出的 Context 进行回答,回答的内容与 Cont ...
大模型 RAG 的应用和开发
1 向量数据库1.1 向量数据库简介向量数据库就是一种专门用于存储和处理向量数据的数据库系统,传统的关系型数据库通常不擅长处理向量数据,因为它们需要将数据映射为结构化的表格形式,而向量数据的维度较高、结构复杂,导致传统数据库存储和查询效率低下,所以向量数据库应运而生。
1.2 传统数据库与向量数据库的差异传统数据库采用基于行的存储方式,传统数据库将数据存储为行记录,每一行包含多个字段,并且每个字段都有固定的列。传统数据库通常使用索引来提高查询性能,例如下方就是一个典型的传统数据库表格
这种方式在处理结构化数据时非常高效,但在处理非结构化或半结构化数据时效率低下。
向量数据库将数据以列形式存储,即每个列都有一个独立的存储空间,这使得向量数据库可以更加灵活地处理复杂的数据结构。向量数据库还可以进行列压缩(稀疏矩阵),以减少存储空间和提高数据的访问速度。并且在向量数据库中,将数据表示为高维向量,其中每个向量对应于数据点。这些向量之间的距离表示它们之间的相似性。这种方式使得非结构化或半结构化数据的存储和检索变得更加高效。
以电影数据库为例,我们可以将每部电影表示为一个特征向量。假设我们使用四个 ...
06 - WASM 插件开发
1 认识Wasm1.1 什么是 WasmWasm 可以理解为是一种轻量级的编码格式,它可以由多种语言编写的程序编译而来。最初 Wasm 是用于 Web 浏览器中,为了解决前端 JS 性能不足而发明的,但是在后面逐渐扩展到了后端以及云原生等多个领域。Wasm 有以下特点:
高效性能:提供了接近机器码的性能。
跨平台:Wasm 是一种与平台无关的格式,可以在任何支持它的平台上运行,包括浏览器和服务器。
安全性:Wasm 在一个内存安全的沙箱环境中运行,这意味着它可以安全地执行不受信任的代码,而不会访问或修改主机系统的其他部分。
可移植性:Wasm 模块可以被编译成 WebAssembly 二进制文件,这些文件可以被传输和加载到支持 Wasm 的任何环境中。
多语言支持:Wasm 支持多种编程语言,开发者可以使用 C、C++、Rust、Go 等多种语言编写代码,然后编译成 Wasm 格式。
1.2 Wasm VM在 Envoy 中,VM 通常在每个线程中创建并相互隔离。因此 Wasm 程序将复制到 Envoy 所创建的线程里,并在这些虚拟机上加载并执行。插件提供了一种灵活的方式来扩展和自 ...
记录访问 HTTPS 网站报错问题
1 简介1.1 常用排查思路在客户端访问 HTTPS 服务器时关于 TLS 的相关问题常见有:密码套件协商失败、证书过期等。定位手段可以使用如下命令:
12curl -vk https://www.example.comstrace openssl s_client -tlsextdebug -connect www.example.com:443
通过 OpenSSL 命令可以看到访问的更多信息。
另外为了查看 TLS 握手过程,可以通过 tcpdump、wireshark 等工具进行抓包。
1.2 常用工具在发现 密码套件协商失败或者TLS握手中某些扩展参数协商失败(椭圆曲线选择),可以通过 工具扫描查看服务器支持的密码套件和椭圆曲线等。
nmap
安装nmap工具:首先需要在Linux系统上安装nmap工具。可以通过包管理器(如apt、yum等)进行安装,或者从官方网站下载并编译安装。运行nmap扫描:使用以下命令运行nmap扫描,以获取目标服务器支持的TLS协议和密码套件信息:
1nmap --script ssl-enum-ciphers -p 443 <目标IP地 ...
AI 大模型微调
0 参考资料GeekAGI 知识库: https://geek-agi.feishu.cn/wiki/B9rYwwg6xidZYJkbrlscxTQFnOc项目地址:https://github.com/DjangoPeng/LLM-quickstart
0.1 搭建开发环境本项目对于硬件有一定要求:GPU 显存不小于16GB,支持最低配置显卡型号为 NVIDIA Tesla T4。建议使用 GPU 云服务器来进行模型训练和微调。项目使用 Python 版本为 3.10,环境关键依赖的官方文档如下:
Python 环境管理 Miniconda
Python 交互式开发环境 Jupyter Lab
以下是详细的安装指导(以 Ubuntu 22.04 操作系统为例):
安装操作系统级软件依赖1234sudo apt update && sudo apt upgradesudo apt install ffmpeg## 检查是否安装成功ffmpeg -version
参考:音频工具包 ffmpeg 官方安装文档
安装 Python 环境管理工具 Miniconda
 ...
Untitled
    
    
    
    
    
#watermark {
  position: relative;
  overflow: hidden;
}
#watermark .x {
  position: absolute;
  top: 800;
  left: 400;
  color: #3300ff;
  font-size: 50px;
  pointer-events: none;
  opacity:0.5;
  filter:Alpha(opacity=50);
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
}
    
    
 html{color:#333;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-rendering:optimizelegibility;font-family:Helvetica Neue,PingFang SC,Verdana,Microsoft ...
Untitled
    
    
    
    
    
#watermark {
  position: relative;
  overflow: hidden;
}
#watermark .x {
  position: absolute;
  top: 800;
  left: 400;
  color: #3300ff;
  font-size: 50px;
  pointer-events: none;
  opacity:0.5;
  filter:Alpha(opacity=50);
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
}
    
    
 html{color:#333;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-rendering:optimizelegibility;font-family:Helvetica Neue,PingFang SC,Verdana,Microsoft ...
Untitled
    
    
    
    
    
#watermark {
  position: relative;
  overflow: hidden;
}
#watermark .x {
  position: absolute;
  top: 800;
  left: 400;
  color: #3300ff;
  font-size: 50px;
  pointer-events: none;
  opacity:0.5;
  filter:Alpha(opacity=50);
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
}
    
    
 html{color:#333;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-rendering:optimizelegibility;font-family:Helvetica Neue,PingFang SC,Verdana,Microsoft ...
趣谈网络协议
0 参考资料知识图谱
代码地址:https://github.com/popsuper1982/tcpipillustrated
1 通信协议综述2 底层网络协议2.1 二层到三层2.1.1 物理层和MAC层同一个物理层之间可以使用Hub连接,也就是集线器。这种设备有多个口,可以将宿舍里的多台电脑连接起来。但是,和交换机不同,集线器没有大脑,它完全在物理层工作。它会将自己收到的每一个字节,都复制到其他端口上去。这是第一层物理层联通的方案。
第二层,数据链路层,也即MAC层要解决的问题有,
这个包是发给谁的?谁应该接收?大家都在发,会不会产生混乱?
有没有谁先发、谁后发的规则?
如果发送的时候出现了错误,怎么办?
数据包应该发给谁,谁先发,谁后发,防止混乱等。学名叫多路访问。有很多算法可以解决这个问题。就像车管所管束马路上跑的车,能想的办法都想过了。
方式一:分多个车道。每个车一个车道,你走你的,我走我的。这在计算机网络里叫作信道划分;
方式二:今天单号出行,明天双号出行,轮着来。这在计算机网络里叫作轮流协议;
方式三:不管三七二十一,有事儿先出门,发现特堵,就回去。错过高峰再出。 ...
