当前位置: 首页 > article >正文

ProX框架实战:用轻量级精炼模型规模化提升LLM预训练数据质量

1. 项目概述为什么数据质量是LLM预训练的“命门”如果你在过去几年里折腾过大语言模型的训练无论是复现一个Llama架构的模型还是想在自己的垂直领域数据上做持续预训练大概率都踩过同一个坑数据质量。我们常常把海量数据扔进模型期待它能“大力出奇迹”但结果往往是模型记住了大量噪声、学会了错误的语法甚至在推理时逻辑混乱。问题的根源往往不在于模型架构不够新也不在于算力不够强而在于我们喂给模型的“粮食”——预训练数据——本身就不够干净、不够优质。传统的解决方案是什么要么是简单粗暴的规则过滤比如用正则表达式去掉HTML标签、过滤低质量URL要么是依赖成本极高的专家人工标注来制定清洗规则。前者过于粗糙容易误伤优质内容后者虽然精准但根本无法扩展到TB乃至PB级别的互联网数据上。更棘手的是不同领域比如通用网页文本和数学代码对“高质量”的定义天差地别一套规则很难通吃。这就是GAIR-NLP团队推出ProX框架的核心出发点。它提出了一种全新的思路将数据清洗和提纯本身看作一个“编程”任务。不是让人去为海量数据写规则而是让一个经过专门训练的、参数规模相对较小的“精炼模型”像专家一样对每一个数据样本进行智能化的评估、修复和增强。简单说ProX的目标是规模化地、自动化地生产出接近专家手工筛选水准的预训练数据。根据他们论文和开源项目中的实验使用ProX精炼后的数据训练模型在多项基准测试上平均能带来超过2%的性能提升在数学领域甚至能提升高达20%。对于动辄需要数千张GPU卡月、成本以百万美元计的LLM预训练来说这2%的提升意味着巨大的性价比优势。2. ProX核心设计两阶段“编程式”数据精炼框架ProX的核心理念非常巧妙它认为高质量数据的生产可以分解为一系列可编程、可执行的“操作”。这些操作由轻量级的精炼语言模型来执行模仿人类专家在审查数据时的决策过程。2.1 框架总览文档级与片段级双层过滤ProX的精炼流程主要分为两个层次如下图所示对应项目中的prox-framework.png原始语料库 → [文档级精炼 LM] → 过滤后文档 → [片段级精炼 LM] → 高质量片段 → 最终精炼语料文档级精炼这是第一道关卡。精炼模型会扫描整个文档比如一篇完整的网页文章判断其整体质量。它需要回答诸如“这篇文章主题是否明确”、“语言是否通顺连贯”、“是否包含大量广告或无关信息”等问题。只有通过这一关的文档才有资格进入下一阶段。这一步主要剔除的是主题无关、内容空洞、或明显低质的整篇文档。片段级精炼通过文档级筛选后文档会被切割成更小的文本片段例如按段落或固定长度token数切割。精炼模型再对每一个片段进行更细致的评估。这里关注的是局部质量“这个段落逻辑是否清晰”、“是否存在事实性错误或矛盾”、“句子结构是否完整”。只有高质量的片段会被保留并最终汇入精炼后的语料库。这种双层设计非常符合人类审阅习惯先看整体是否值得读再细读每一部分是否言之有物。它比单层过滤能更精细地保留长文档中的优质部分同时剔除其中的“水段落”。2.2 精炼模型小模型办大事的关键你可能会问让模型去评估数据质量那这个“裁判”模型本身岂不是要非常强大ProX的一个关键创新在于它证明了小参数规模的模型如0.3B参数在经过特定训练后就能出色地完成数据精炼任务其效果可以媲美甚至超越基于规则的方法而成本远低于使用千亿参数LLM进行数据合成或标注。这些精炼模型是如何训练出来的其训练数据来自于高质量种子数据合成噪声数据。例如从维基百科、教科书、权威期刊等公认的高质量来源抽取文本作为正例然后对这些正例进行人工或自动的破坏比如插入语法错误、添加无关句子、混淆事实等制造出负例。精炼模型的任务就是学习区分这些高质量文本和低质量文本。一旦训练完成它就能将这种判别能力泛化到未见过的海量网络数据上。实操心得精炼模型的领域特异性ProX团队发布了不同领域的精炼模型如web-doc-refining-lm通用网页和math-doc-refining-lm数学领域。这一点至关重要。我在尝试用通用精炼模型处理代码数据时发现效果不佳因为它不理解代码的语法和结构。因此如果你的目标领域比较特殊如法律、医学、代码最好能基于该领域的高质量种子数据微调或重新训练一个领域专用的精炼模型。ProX的开源代码提供了完整的训练流程这为领域适配打开了大门。3. 实战使用ProX精炼你自己的数据理论讲完了我们来点实际的。假设你手头有一批原始的RedPajama-V2数据想用ProX把它变成高质量语料以下是详细步骤和避坑指南。3.1 环境搭建与依赖安装首先强烈建议为数据精炼创建一个独立的Conda环境避免与现有的模型训练环境产生依赖冲突。# 克隆ProX仓库 git clone https://github.com/GAIR-NLP/ProX.git prox cd prox # 创建并激活精炼专用环境 conda create -n prox_refining python3.10 -y conda activate prox_refining # 安装精炼所需的核心依赖 pip install -r refining_requirements.txtrefining_requirements.txt里通常包含了transformers,datasets,accelerate等库。这里有个细节ProX的精炼脚本通常设计为在分布式集群如Slurm上运行以处理TB级数据。如果你只是在单机或多卡服务器上测试需要后续调整脚本。3.2 获取精炼模型ProX在Hugging Face上提供了开箱即用的精炼模型通用领域gair-prox/web-doc-refining-lm和gair-prox/web-chunk-refining-lm数学领域gair-prox/math-doc-refining-lm和gair-prox/math-chunk-refining-lm你可以直接用from transformers import AutoModelForCausalLM加载它们。模型本身不大通常只有几亿参数显存占用友好。3.3 运行精炼流程项目提供了示例Slurm脚本位于scripts/data_gen/目录下。我们以单机多卡为例拆解其核心步骤。步骤一文档级精炼你需要准备一个脚本其核心逻辑是加载原始数据分片shard。加载web-doc-refining-lm模型和分词器。将每个文档输入模型获取一个“质量分数”或二分类决策保留/丢弃。将判定为高质量的文档保存到新的文件中。一个简化的Python核心代码片段可能如下from transformers import AutoModelForCausalLM, AutoTokenizer import datasets model AutoModelForCausalLM.from_pretrained(gair-prox/web-doc-refining-lm, device_mapauto) tokenizer AutoTokenizer.from_pretrained(gair-prox/web-doc-refining-lm) def score_document(text): # 将文档构造成精炼模型预期的输入格式例如“判断以下文档质量[DOC] {text} [/DOC]” inputs tokenizer(prompt_template.format(texttext), return_tensorspt).to(model.device) with torch.no_grad(): outputs model(**inputs) # 假设模型输出最后一个token的logits对应“高质量”/“低质量” score torch.softmax(outputs.logits[:, -1, :], dim-1)[0, high_quality_token_id] return score.item() # 遍历数据集 dataset datasets.load_dataset(your_raw_data) filtered_data [] for doc in dataset[train]: if score_document(doc[text]) THRESHOLD: # THRESHOLD是一个预设阈值如0.8 filtered_data.append(doc)步骤二片段级精炼流程与文档级类似但输入单位变成了从保留文档中切割出的片段例如每512个token一个片段。使用web-chunk-refining-lm模型对每个片段进行打分和过滤。注意事项阈值的选择与校准精炼模型输出的是一个分数你需要设定一个阈值来决定保留与否。这个阈值不是固定的。最佳实践是进行小规模校准随机采样几百个文档/片段用精炼模型打分然后人工评估这些样本的质量根据人工评估结果如希望保留前70%的高质量数据来确定一个合适的阈值。阈值设得太高会过滤掉过多数据可能损失多样性设得太低则精炼效果打折扣。3.4 处理大规模数据的工程技巧当你处理TB级数据时直接使用datasets库逐条加载和推理会非常慢且占用大量内存。ProX的精炼脚本通常采用以下优化流式读取使用datasets的iterable dataset功能避免一次性加载所有数据。并行处理利用multiprocessing或ray等库将数据分片在多CPU进程上进行预处理和模型推理的流水线操作。批量推理尽管是序列生成任务但可以将多个文档/片段拼接在一个batch中通过注意力掩码隔离显著提升GPU利用率。检查点机制长时间运行的任务必须支持断点续跑。脚本应记录已处理的数据文件索引下次从中断处继续。4. 使用ProX精炼数据训练模型ProX团队已经开源了使用其精炼数据如RedPajama-pro训练模型的完整流程基于他们修改的TinyLlama代码库。以下是关键步骤解析。4.1 数据准备与分词假设你已经下载了精炼后的数据例如从Hugging Face数据集gair-prox/RedPajama-pro下一步是将其转换为模型训练所需的token化后的二进制格式。# 设置环境变量指向你的工作目录、原始数据目录等 source setup_personal_env.sh source setup_common_env.sh # 下载数据如果尚未本地缓存 python scripts/data_download/hf_download.py \ --dataset_name gair-prox/RedPajama-pro # 使用Llama的分词器进行tokenization export PYTHONPATH$PYTHONPATH:$TINYLM_WORK_DIR/train python -m train.data_tokenize.prepare_web \ --source_path $RAW_DATA_DIR/gair-prox/RedPajama-pro \ --tokenizer_path $TINYLM_WORK_DIR/vocab_files/llama_hf \ # 使用HF格式的Llama分词器 --destination_path $TOKENIZE_DATA_DIR/RedPajama-pro/llama \ --split train \ --percentage 1.0这个过程会将文本数据转换成一系列.bin文件每个文件包含固定数量的token ID方便训练时进行随机读取和加载。4.2 模型训练配置与启动ProX提供的训练脚本基于litgpt配置清晰。你需要重点关注配置文件如configs/general/下的YAML文件中的几个参数model_name: 模型架构如tiny_LLaMA_0_3b。data: 指向你上一步生成的token化数据目录。train: 训练总步数、学习率、批次大小等。checkpointing: 保存检查点的间隔按token数或步数。启动分布式训练Slurm环境sbatch scripts/train/tlm/pt_tlm_xs_redpj_prox.sh对于单机多卡训练你需要手动调用训练入口并确保正确设置了CUDA_VISIBLE_DEVICES和环境变量。4.3 模型评估与结果分析训练完成后评估是验证数据精炼效果的关键。ProX集成了lighteval和自研的math-evaluation-harness。通用能力评估# 将训练好的模型权重转换为Hugging Face格式 python -m scripts.weight_conversion.batch_model_conversion \ --litgpt_model_dir pt_llama_0_3b_redpj_25B_prox \ --hf_model_dir pt_llama_0_3b_redpj_25B_prox_hf \ --arch_name tiny_LLaMA_0_3b # 在10个标准任务上评估 python -m scripts.eval.base_evaluation \ --hf_model_dir pt_llama_0_3b_redpj_25B_prox_hf \ --task_impl lighteval \ --task_set fineweb \ # 或自定义的任务列表 --model_step_list 25 # 评估第25个检查点假设对应250亿token数学能力评估 需要切换到math-evaluation-harness环境并运行其提供的脚本。它会在一系列数学数据集如GSM8K、MATH上进行测试。实操心得对比实验的重要性要真正令人信服地证明ProX数据的优势必须做严格的对比实验。我的做法是准备三份数据——原始数据、经过传统规则清洗的数据、ProX精炼数据。用完全相同的模型架构、超参数和计算量token数训练三个模型。然后在一个独立的、未见过的评估集上比较它们的性能。ProX论文中展示的2%提升正是来自这样的对比。仅仅用ProX数据训一个模型看绝对分数意义不大。5. 常见问题与排查技巧实录在实际部署和运行ProX过程中你可能会遇到以下典型问题。5.1 精炼速度慢吞吐量上不去问题表现处理数据的速度远低于预期GPU利用率低。排查与解决检查数据加载是否是I/O瓶颈尝试将数据放在高速SSD或内存盘上。使用datasets的流式模式并设置合适的缓存大小。检查模型加载确保精炼模型使用了device_map”auto”正确加载到多GPU上。对于非常大的数据分片考虑使用accelerate进行更精细的分布式推理。调整Batch Size尽管是文本生成式评分但可以尝试将多个样本填充到同一长度后组成batch进行前向传播能极大提升吞吐。你需要修改精炼脚本实现一个简单的批处理逻辑。使用量化精炼推理对精度要求相对较低。可以尝试使用bitsandbytes库进行4位或8位量化在不显著影响效果的前提下大幅降低显存占用和加速推理。5.2 精炼后数据量急剧减少问题表现原始数据有1TB精炼后只剩100GB。排查与解决检查阈值这是最常见的原因。回顾3.3节提到的阈值校准步骤。你的阈值可能设得太高了。用一个小样本集调低阈值如从0.9调到0.7观察保留数据比例和质量的变化。检查精炼模型是否适用你用的精炼模型如web-doc-refining-lm是否与你的数据领域匹配用数学模型去精炼文学数据可能会误杀很多好内容。观察被过滤掉的样本看看它们是否真的低质。原始数据质量极差如果原始数据本身就是爬虫抓取的、未经任何处理的垃圾数据那么高过滤比例是正常的。ProX不是魔术它只能优化不能无中生有。5.3 训练时Loss曲线异常问题表现使用ProX数据训练时loss下降很慢、波动大或者很快过拟合。排查与解决数据多样性过度严格或单一领域的精炼可能导致数据多样性不足。检查精炼后数据的主题分布、文本长度分布是否过于集中。可以考虑在精炼时对不同来源或主题的数据采用略有差异的阈值或者混合少量如5%未精炼的、来源不同的数据。数据重复精炼过程是否无意中造成了大量重复数据高质量的模板化文本如新闻导语、维基百科开头可能被大量保留。需要在精炼流程后加入去重步骤如使用MinHashLSH进行近似去重。学习率与数据量数据质量变高后模型可能学习得更快。尝试使用略微大一点的学习率或者使用学习率warmup。同时因为数据总量可能变少要确保训练的token数足够通常仍需数百B避免在少量数据上循环训练导致过拟合。5.4 评估结果提升不明显问题表现使用了ProX数据但在MMLU、ARC等基准测试上提升不到论文中宣称的幅度。排查与解决评估任务对齐ProX的通用精炼数据提升在“通用知识推理”类任务上最明显。如果你的评估重点是代码或纯记忆性任务提升可能有限。确保你使用的评估任务能反映你关心的能力。训练充分性模型是否在ProX数据上训练了足够的token数有时需要比原始数据更长的训练才能充分吸收高质量信息。尝试增加20%-50%的训练步数。基线对比你的“原始数据”基线是否已经经过了一定的基础清洗如去重、语言过滤ProX对比的是非常“脏”的原始数据。如果基线数据已经不错那么提升空间自然变小。确保对比是公平的。随机种子与超参数深度学习实验有方差。用不同的随机种子多跑几次实验取平均性能。确保对比实验间只有数据不同所有超参数和初始化条件完全一致。ProX框架将数据质量的重要性提到了一个新的高度并提供了一套可落地、可扩展的自动化解决方案。它背后的“编程化”思想——即用轻量级模型学习并执行数据质量决策——为数据中心的AI研究提供了一个强有力的工具。从我个人的使用体验来看最大的收获不是直接获得了某个“最优”数据集而是掌握了一套方法论如何针对自己的任务和目标去定义“质量”并规模化地生产它。这个过程本身就是对数据和模型关系的一次深刻理解。

相关文章:

ProX框架实战:用轻量级精炼模型规模化提升LLM预训练数据质量

1. 项目概述:为什么数据质量是LLM预训练的“命门”?如果你在过去几年里折腾过大语言模型的训练,无论是复现一个Llama架构的模型,还是想在自己的垂直领域数据上做持续预训练,大概率都踩过同一个坑:数据质量。…...

容器渗透测试工具ctrsploit实战:从原理到漏洞利用与防御

1. 容器渗透测试工具 ctrsploit 深度解析与实战指南在云原生和容器化技术成为主流的今天,容器安全的重要性已经不言而喻。无论是安全工程师、SRE还是开发人员,我们都需要一套趁手的工具来评估和验证容器环境的安全性。ctrsploit 正是这样一个专为容器环境…...

【限时解密】Copilot Next 自动化工作流配置权重矩阵:微软未公开的6层推理优先级模型首次披露

更多请点击: https://intelliparadigm.com 第一章:【限时解密】Copilot Next 自动化工作流配置权重矩阵:微软未公开的6层推理优先级模型首次披露 核心机制:六维动态权重矩阵 Copilot Next 并非依赖静态 prompt 模板,…...

Java 反射性能优化技巧

Java反射性能优化技巧:提升运行效率的实用指南 Java反射机制为程序提供了动态操作类与对象的能力,但在高性能场景下,其性能开销可能成为瓶颈。通过优化反射调用,开发者可以显著提升程序运行效率。本文将介绍几种实用的反射性能优…...

【VS Code Copilot Next 工作流配置终极指南】:20年DevOps专家亲授5大高频报错的根因定位与秒级修复法

更多请点击: https://intelliparadigm.com 第一章:VS Code Copilot Next 工作流配置报错的系统性认知框架 当 VS Code Copilot Next 在工作流初始化阶段抛出 Failed to load extension GitHub.copilot-next 或 Error: Cannot resolve workspace configu…...

数据库慢查询日志分析实战

数据库慢查询日志分析实战:提升性能的关键利器 在数据库运维中,慢查询日志是定位性能瓶颈的重要工具。当应用响应变慢时,慢查询日志能帮助开发者快速发现执行效率低下的SQL语句,从而优化数据库性能。本文将围绕慢查询日志分析的核…...

小龙虾AI外挂终极选择:XCrawl vs Firecrawl——用一半价格,获两倍数据价值

作为OpenClaw(小龙虾AI)的深度用户,你是否曾为数据采集工具的选择而纠结?一边是口碑不错但价格高昂的Firecrawl,一边是性价比突出但相对陌生的XCrawl。到底哪个才是小龙虾最适配的数据外挂? 今天就为你带来一场硬核对比,用真实数据告诉你:为什么XCrawl才是小龙虾AI的最佳拍档…...

FastAPI与Azure日志整合的最佳实践

在现代的Web开发中,日志记录是监控和调试应用程序的重要工具。尤其是在使用云服务如Azure Web App时,正确配置和使用日志记录可以大大提高应用的可维护性和可靠性。本文将通过一个具体的实例,展示如何在FastAPI项目中配置Azure日志,避免日志重复显示,并确保不同级别的日志…...

DevEco Studio:Inspector双向预览

注意:多设备预览时,不支持双向预览。 通过双向预览功能,可以实现代码和预览界面的双向联动。 先打开预览界面,然后点击右上角的Inspector按钮,打开双向预览功能: 开启双向预览功能后,支持代码…...

深度解析foo2zjs:Linux系统中打印机驱动的开源解决方案与实战配置

深度解析foo2zjs:Linux系统中打印机驱动的开源解决方案与实战配置 【免费下载链接】foo2zjs A linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/ 项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs 在Linux系统中&#xff0…...

DevEco Studio:多端设备预览

在工程目录中,打开任意一个ets文件:点击右侧的Previewer按钮:打开了预览窗口:点击右上角的Enable Profile Manager:打开Multi-profile preview:就可以同时在多种设备上预览了:...

如何用XXMI启动器一站式管理6款热门二次元游戏模组:终极模组管理解决方案

如何用XXMI启动器一站式管理6款热门二次元游戏模组:终极模组管理解决方案 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher XXMI启动器是一款革命性的游戏模组管理平台…...

DevEco Studio:Profile Manager

1、我在module.json5中配置了3种设备:点击右侧的Previewer:出现预览窗口:点击右上角的Enable Profile Manager:点击 Edit图标:出现界面,创建一个tablet profile,然后点击OK 按钮:同理&#xff0…...

机器学习分子力场AceFF-2:架构创新与药物发现应用

1. 机器学习分子力场技术演进与AceFF-2的创新突破分子力场作为原子尺度模拟的基石,其发展历程经历了从经验公式到量子力学计算,再到如今机器学习赋能的三个阶段。传统分子力学(MM)力场如GAFF和AMBER依赖预设的参数化函数&#xff…...

基于Hermes Agent与Railway的自主AI智能体一键部署实战

1. 项目概述:一键部署你的智能AI助手 最近在折腾AI智能体,发现了一个挺有意思的项目:Hermes Agent。简单来说,这是一个能自我进化的自主AI智能体,最吸引我的是它原生支持Telegram,这意味着你可以直接在Tel…...

nli-MiniLM2-L6-H768批量处理优化:利用GPU并行计算加速大规模文本对推理

nli-MiniLM2-L6-H768批量处理优化:利用GPU并行计算加速大规模文本对推理 1. 引言 处理海量文本对(如百万级)的自然语言推理任务时,传统的单条处理方式效率极低。以nli-MiniLM2-L6-H768模型为例,当面对大规模数据时&a…...

Glaze工具实战:保护数字艺术版权对抗AI模仿

1. 项目概述最近在数字艺术圈里有个话题特别火——如何保护原创作品不被AI模型随意抓取训练。Glaze这个工具的出现,给艺术家们带来了新的希望。作为一个长期关注数字版权保护的从业者,我花了三周时间系统测试了Glaze在不同场景下的实际效果,今…...

告别macOS视频预览困境:QuickLookVideo让Finder真正支持所有视频格式

告别macOS视频预览困境:QuickLookVideo让Finder真正支持所有视频格式 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: …...

魔兽争霸3终极兼容性修复指南:使用WarcraftHelper解决现代系统问题

魔兽争霸3终极兼容性修复指南:使用WarcraftHelper解决现代系统问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在新系…...

终极免费游戏启动器:Bedrock Launcher完整使用指南

终极免费游戏启动器:Bedrock Launcher完整使用指南 【免费下载链接】BedrockLauncher 项目地址: https://gitcode.com/gh_mirrors/be/BedrockLauncher Bedrock Launcher是一款专为Minecraft基岩版设计的免费开源游戏启动器,它彻底改变了传统游戏…...

GHelper完整指南:3步释放华硕笔记本隐藏性能的终极方案

GHelper完整指南:3步释放华硕笔记本隐藏性能的终极方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, S…...

如何用html-to-docx实现HTML到Word文档的无缝转换?

如何用html-to-docx实现HTML到Word文档的无缝转换? 【免费下载链接】html-to-docx HTML to DOCX converter 项目地址: https://gitcode.com/gh_mirrors/ht/html-to-docx 你是否曾经需要将网页内容或HTML格式的报告转换为标准的Word文档,却遭遇了格…...

大模型校准技术:提升AI输出可靠性的关键方法

1. 大模型校准技术概述在自然语言处理领域,模型校准技术正逐渐成为确保AI系统输出可靠性的关键环节。作为一名长期从事NLP技术落地的从业者,我深刻体会到:一个能准确评估自身预测置信度的AI系统,远比单纯追求高准确率的"黑箱…...

终极麻将AI助手:Akagi实战部署与深度定制完整指南

终极麻将AI助手:Akagi实战部署与深度定制完整指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuki,…...

极致性能优化:Vue ECharts 8.0架构重构与Tree-shaking技术实践

极致性能优化:Vue ECharts 8.0架构重构与Tree-shaking技术实践 【免费下载链接】vue-echarts Vue.js component for Apache ECharts™. 项目地址: https://gitcode.com/gh_mirrors/vu/vue-echarts 在数据可视化项目中,Vue ECharts作为基于Vue.js和…...

5分钟掌握untrunc:你的视频急救终极指南

5分钟掌握untrunc:你的视频急救终极指南 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否经历过这样的绝望时刻?精心拍摄的婚礼视频突然…...

【CSP】CSP-J 2019 第一轮真题解析(二):阅读程序题

继上一篇单项选择题的全面解析后,本文我们将进入 CSP 初赛试卷中拉开分差的核心板块——阅读程序题。 阅读程序题考察的是考生在脑海里(或草纸上)“人工执行”代码的能力。除了基础的语法规则,它常融合数学数论规律。我们先来看本…...

Erupt 功能升级:修复 Bug、新增模块,特性丰富且易于上手!

Erupt 迎来功能更新,不仅修复多个 Bug,还新增多个模块,特性丰富强大,易于上手,支持多数据源,前端零代码,还可在线体验。 Bug 修复情况 此次更新修复了日期区间查询时分秒不生效、erupt - ai 切换…...

「一文搞懂 Kotlin 协程」:从入门到实战完全指南

「一文搞懂 Kotlin 协程」:从入门到实战完全指南 前言 协程是 Kotlin 最强大的特性之一,它让你用同步的方式写异步代码,彻底告别 Callback 地狱。 ┌───────────────────────────────────────────…...

【maaath】 为开源鸿蒙 Flutter 跨平台工程集成扫码识别能力

为开源鸿蒙 Flutter 跨平台工程集成扫码识别能力欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net 作者:maaath前言 在移动应用开发中,扫码识别是最常见的功能之一,涵盖二维码、条形码、Data Matrix 等多种…...