1.Light weight IP(LWIP)轻量化的轻量 TCP/IP 协议
2.Mint UI - 饿了么出品的开源、轻量的化源移动端 UI 组件库
3.一文读懂,硬核 Apache DolphinScheduler3.0 源码解析
4.论文源码实战轻量化MobileSAM,码轻分割一切大模型出现,量化模型缩小60倍,代码速度提高40倍
5.SRS(simple-rtmp-server)流媒体服务器源码分析--启动
6.Acorn,轻量2018仿小米源码用于 Kubernetes 的化源轻量级、可移植的码轻 PaaS
Light weight IP(LWIP)轻量化的 TCP/IP 协议
Light weight IP(LWIP)轻量化的 TCP/IP 协议,由Adam Dunkels开发的量化开源协议栈,旨在用少量资源消耗实现完整TCP/IP功能,代码适合嵌入式系统。轻量
LWIP支持多种协议,化源如ARP、码轻ICMP、量化IGMP、代码UDP、TCP、PPP、DNS、DHCP、IP、SNMP和AUTOIP等,适用于无操作系统环境,仅需少量RAM和ROM即可运行,适合资源受限的嵌入式设备。
LWIP具有多种API,包括RAW API、LWIP API和SOCKET API,提供不同性能和易用性,适应多种网络应用程序需求。
LWIP在嵌入式领域有显著优势:资源开销低、支持完整协议、实现常见应用、高度可移植、开源免费且得到广泛验证。
LWIP提供三种模式:RAW API、LWIP API和SOCKET API,其中RAW API将协议栈与应用置于同一进程,RAW API和LWIP API支持多线程,SOCKET API提供UNIX标准API。
LWIP源码结构清晰,包含核心文件、团队单页源码基础类函数、域名解析、校验和、初始化、IP协议、内存管理、网卡操作、网络数据包管理、TCP协议、超时处理和UDP协议等模块。
在STMF微控制器中,LWIP提供网络层、传输层功能,MAC层和PHY层由硬件实现。SMI接口允许访问PHY寄存器,MII和RMII用于MAC与外接PHY的互联,支持/Mbit/s数据传输。
LWIP数据包和网络接口管理通过netif结构体实现,协议栈API包括用户编程接口和内核进程通信机制,支持数据包处理、连接管理和内核回调接口。
编程实例展示了如何创建UDP和TCP线程,以实现网络应用程序的开发。
Mint UI - 饿了么出品的开源、轻量的移动端 UI 组件库
Mint UI,一款轻量化移动端 UI 组件库,由饿了么前端团队基于 Vue 2.0 打造,旨在提供高效、统一的 UI 构建方案。拥有丰富的 CSS 和 JS 组件,风格中性,支持按需加载与 CSS3 动效,性能优秀。 该组件库包括多个移动端常用组件,涵盖 js 组件、css 组件与表单组件,提供流畅的开发体验,适配中低端机型。文档详尽,易于上手,使用 npm 或 CDN 引入,九牛源码网适合不同开发需求。 Mint UI 与 Vue.js 配合使用,支持按需引入,优化移动端体验。在快速迭代的业务功能开发中,能有效减少重复工作,提升开发效率。同时,Mint UI 也适用于安卓和 iOS 应用界面开发,适应不同平台需求。 基于 MIT 授权协议,Mint UI 完全免费,可用于商业项目。国内访问官网不稳定时,开发者可通过拉取源码构建本地服务进行查阅。 请访问 Mint UI 官方网站,获取更多信息及资源。关注我们,持续获取高质量的免费开源资源。一文读懂,硬核 Apache DolphinScheduler3.0 源码解析
这篇文章深入解析了硬核Apache DolphinScheduler 3.0的源码设计和策略,让我们一窥其背后的分布式系统架构和容错机制。首先,DolphinScheduler采用去中心化设计,通过Master/Worker角色注册到Zookeeper,实现无中心的集群管理。API接口提供丰富的调度操作,MasterServer负责任务分发和监控,而WorkerServer负责任务执行和日志服务。
容错机制是系统的关键,包括服务宕机容错和任务重试。服务宕机时,MasterServer通过ZooKeeper的Watcher机制进行容错处理,重新提交任务。任务失败则会根据配置进行重试,直至达到最大次数或成功。远程日志访问通过RPC实现,保持系统的轻量化特性。
源码分析部分详细介绍了工程模块、配置文件、API接口以及Quartz框架的水熊影视源码运用。Master的启动流程涉及Quartz的调度逻辑,Worker则负责执行任务并接收Master的命令。Master与Worker之间通过Netty进行RPC通信,实现了负载均衡和任务分发。
加入社区讨论,作者鼓励大家参与DolphinScheduler的开源社区,通过贡献代码、文档或提出问题来共同提升平台。无论是新手还是经验丰富的开发者,开源世界都欢迎你的参与,为中国的开源事业贡献力量。
论文源码实战轻量化MobileSAM,分割一切大模型出现,模型缩小倍,速度提高倍
MobileSAM是年发布的一款轻量化分割模型,对前代SAM模型进行了优化,模型体积减小倍,运行速度提升倍,同时保持了良好的分割性能。MobileSAM的使用方式与SAM兼容,几乎无缝对接,唯一的调整是在模型加载时需稍作修改。
在环境配置方面,创建专属环境并激活,安装Pytorch,实现代码测试。
网页版使用中,直接在网页界面进行分割操作,展示了一些分割效果。
提供了Predictor方法示例,包括点模式、单点与多点分割,以及前景和背景通过方框得到掩码的实现。此外,SamAutomaticMaskGenerator方法用于一键全景分割。
关于模型转换和推理,讲解了将SAM模型转换为ONNX格式,包括量化ONNX模型的使用方法。在ONNX推理中,输入签名与SamPredictor.predict不同,需要特别注意输入格式。团夕影视源码
总结部分指出,MobileSAM在体积与速度上的显著提升,以及与SAM相当的分割效果,对于视觉大模型在移动端的应用具有重要价值。
附赠MobileSAM相关资源,包括代码、论文、预训练模型及使用示例,供需要的开发者交流研究。
欢迎关注公众号@AI算法与电子竞赛,获取资源。
无限可能,少年们,加油!
SRS(simple-rtmp-server)流媒体服务器源码分析--启动
小卒最近探索了SRS源码,并撰写博客以整理思路,方便日后查阅。SRS源码具备以下优势:
1、轻量化设计,代码结构清晰,SRS3.0版本代码量约为8万行,功能却足以支撑直播业务。
2、采用State Threads架构,实现高性能、高并发。
3、支持rtmp和hls,满足PC和移动直播的需求。
4、支持集群部署,适应不同规模的部署需求。
代码分析分为两个阶段:一、梳理代码框架,理解流程;二、深入细节,熟悉SRS工作原理。
SRS源码框架包括系统启动、RTMP消息处理、RTMP信息发布、HLS切片等功能模块。系统启动时,初始化类,监听端口,对每个访问请求创建线程,专门处理连接操作。
系统监听包含不同类型的请求,如RTMP连接、HTTP API等,通过创建线程处理。
RTMP连接处理中,SRS采用协程而非线程,实现高效并发。创建协程后,进入协程循环处理。
HTTP API连接监听机制与RTMP类似,仅参数不同。
HTTP API回调接口在run_master函数中注册,允许访问服务器参数。
SRS对拉流处理独特,通过ffmpeg工具实现,SRS代码负责简单的系统调用。
系统启动代码结构清晰,从初始化、监听到线程处理,再到回调注册、拉流处理、自服务,各环节紧密衔接。
总结SRS源码分析,不仅展现了代码的高效性和扩展性,还提供了灵活的部署方案,适用于多种直播场景。
Acorn,用于 Kubernetes 的轻量级、可移植的 PaaS
Acorn 是一个用于 Kubernetes 的轻量级、可移植的 PaaS 框架,其设计旨在简化开发和部署基于 Kubernetes 的应用程序的流程。作为 K3s 的缔造者 Darren Shepherd 及其团队的成果,Acorn 强调了开源、简洁、轻量化和可移植性,使其成为在 Kubernetes 环境下构建和扩展微服务的理想选择。
Acorn 的核心目标是提供一个无需深入了解 Kubernetes 细节即可运行应用程序的平台。通过使用自己的类 JSON 领域特定语言(DSL),它抽象了 Kubernetes 的复杂性,使开发者能够轻松地描述基于微服务设计模式的现代应用程序。与 Cloud Foundry 类似,Acorn 专注于接受源代码或容器镜像并发布端点的工作流程,它在后台与 Kubernetes API 协商,创建资源并建立所需的管道。
在公有云环境下,AWS App Runner、Azure Container Apps 和 Google Cloud Run 等服务提供了类似 PaaS 的体验,但它们局限于特定的云平台,不可移植至其他环境。相比之下,Acorn 是一种能够从开发人员笔记本电脑上的 Kind 集群无缝扩展到多节点集群的框架之一,体现了其可移植性。
本文将详细分析 Acorn 的架构,并展示 Acorn 部署如何转换为 Kubernetes 对象,以及如何通过一系列步骤在 Minikube 中设置环境并部署应用程序。以下是设置和部署过程的关键步骤:
在 Mac 上安装 Minikube,并在其中启用 Nginx Ingress,以支持 Acorn 的功能。
使用 Homebrew 安装 Acorn CLI,并检查其版本,确保已正确安装。
通过运行 `acorn init` 命令配置 Minikube,以准备安装 Acorn。
安装 Acorn 后,会在 Kubernetes 集群中创建一组资源,用于处理应用程序的构建时间和运行时要求。这包括 `namespaces`,其中 `acorn-system` 用于 API 和控制器组件,而 `acorn` 用于应用程序资源。
安装程序会创建一个自定义资源定义(CRD),即 `AppInstance.internal.acorn.io`,用于映射集群内的 Acorn 应用程序。
Acorn API 服务器与 Kubernetes API 服务器关联,通过聚合机制与集群 API 对话。Acorn CLI 只需要与 API 组相关的 RBAC 权限。
API 服务器将入站请求转发给 Acorn 控制器,控制器将应用程序定义转换为 Kubernetes 资源,如 Deployments、ConfigMaps、Secrets 和 Volumes,负责管理和维护应用程序的生命周期。
部署 Acorn 应用程序的流程包括创建一个简单的基于 Nginx 镜像的 Web 服务器实例。在本地目录中创建一个 `Acornfile`,定义容器和端口配置。运行 `acorn run` 命令后,Acorn 会将 OCI 清单推送到集群内的内部注册表服务,并生成访问应用程序的 URL。
测试应用程序后,可以检查 Kubernetes 集群中生成的资源,如 Deployment、Pod 和服务。使用 Ingress 实现对外暴露,确保应用程序可访问。
通过将应用程序部署到生产集群,Acorn 实现了真正的可移植性,无需修改集群配置或部署额外资源。它支持 Docker 影响下的通用模式,为多容器应用程序提供运行环境,并与现有服务(如数据库和缓存)集成。
Acorn 的简单性和便携性使其成为开发者和运维人员的首选,它简化了 Kubernetes 应用程序的部署和管理过程。随着 Acorn 支持直接从 Git 存储库部署的能力,DevOps 团队将能够轻松地管理基于微服务的应用程序,从而实现高效、灵活的开发和运维流程。
只用1块A,就能训练自己的Llama-2模型!
只需一行代码,你就能在自己数据上训练所有Llama-2模型,只需一个A GPU,甚至可以使用亿参数的模型。这得益于4bit和PEFT的高效技术。
使用PPO微调语言模型主要涉及三个关键步骤。首先,生成(Rollout):语言模型根据查询生成响应或连续文本。然后,评估(Evaluation):使用评估函数、模型、人工反馈或组合对查询和生成响应进行评估。最后,优化(Optimization):通过已训练模型和参考模型计算序列中每个令牌的对数概率。优化步骤中,使用查询和响应对来计算KL散度,作为额外奖励信号,确保生成响应不会偏离参考语言模型太远。PPO算法在此过程中进行训练。
安装过程包括使用pip安装Python库。如需从源代码运行库中的示例,需先克隆代码仓库,然后使用pip安装。
如果你想开发TRL库,使用可编辑模式进行安装。
如何使用?
使用SFTTrainer,一个transformers Trainer的轻量化封装,轻松在自定义数据集上微调语言模型或适配器。
使用RewardTrainer,为查询和响应生成评估。评估可由人工参与,或作为另一个模型的输出。
使用PPOTrainer,基于查询生成响应,随后对响应进行评估。评估过程可能涉及人工反馈,或另一个模型输出。
对于更高级应用,如IMDB情感分类,请参考项目中的sentiment_tuning.py示例脚本。下面展示了优化前后,从模型中提取的几个实例。
了解更多信息,请访问GitHub项目地址:github.com/lvwerra/trl。
RocketMQ 5.0: POP 消费模式 原理详解 & 源码解析
RocketMQ 5.0 引入 Pop 消费模式,用于解决 Push 消费模式存在的痛点。Pop 消费模式将客户端的重平衡逻辑迁移至 Broker 端,使得消息消费过程更加高效,避免消息堆积和横向扩展能力受限的问题。引入轻量化客户端后,通过 gRPC 封装 Pop 消费接口,实现了多语言支持,无需在客户端实现重平衡逻辑。
Pop 消费模式的原理在于客户端仅需发送 Pop 请求,由 Broker 端根据请求分配消息队列并返回消息。这样可以实现多客户端同时消费同一队列,避免单一客户端挂起导致消息堆积,同时也消除了频繁重平衡导致的消息积压问题。
Pop 消费流程涉及消息拉取、不可见时间管理、消费失败处理和消息重试等关键环节。消息拉取时,系统会为一批消息生成 CheckPoint,并在 Broker 内存中保存,以便与 ACK 消息匹配。消息不可见时间机制确保在规定时间内未被 ACK 的消息将被重试。消费失败时,客户端通过修改消息不可见时间来调整重试策略。当消费用时超过预设时间,Broker 也会将消息放入重试队列。通过定时消息,Broker 可以提前消费重试队列中的消息,与 ACK 消息匹配,实现高效消息处理。
在 Broker 端,重平衡逻辑也进行了优化。Pop 模式的重平衡允许多个消费者同时消费同一队列,通过 popShareQueueNum 参数配置额外的负载获取队列次数。Pop 消息处理涉及从队列中 POP 消息、生成 CheckPoint 用于匹配 ACK 消息、以及存储 CheckPoint 与 Ack 消息匹配。Broker 端还通过 PopBufferMergeService 线程实现内存与磁盘中的 CheckPoint 和 Ack 消息匹配,以及消息重试处理。
源码解析部分涉及 Broker 端的重平衡逻辑、Pop 消息处理、Ack 消息处理、CheckPoint 与 Ack 消息匹配逻辑等关键组件的实现细节,这些细节展示了 RocketMQ 5.0 如何通过优化消费模式和流程设计,提升消息消费的效率和稳定性。