论文阅读学习(一)

联邦学习论文阅读一:经典FedAvg 联邦学习论文阅读一:经典FedAvg Communication-Efficient Learning of Deep Networksfrom Decentralized Data 论文地址:https://arxiv.org/pdf/1602.05629.pdf 阅读详情

文章Shimin C ,Qin J .Persistent B+-trees in non-volatile main memory[J].Proceedings of the VLDB Endowment,2015,8(7):786-797.

本文为记录学习使用,如有错误,烦请指正。

本次文章内容主要围绕原文前二章内容

引言

        未来的计算机系统预计将配备非易失性主存(Non-Volatile Main Memory, NVMM),这得益于新一代非易失性存储器(Non-Volatile Memory, NVM)技术的发展,如相变存储器(Phase Change Memory, PCM)、自旋转移矩磁阻存储器(Spin-Transfer Torque Magnetic Random Access Memory, STT-MRAM)和忆阻器(Memristor)。非易失性特性使得内存中的数据结构可以在故障后立即恢复。然而,要实现这一目标,需要仔细设计以确保在故障后内存数据结构处于已知的一致状态。

        由于B+-树是一类重要的树结构,广泛用于数据库和数据密集型系统。因此文章重点研究了持久化内存中的 B+-树(Persistent In-Memory B+-Trees)这种数据结构

        

目标

非易失性特性使得内存中的数据结构可以在故障后立即恢复,

即NVMM 的非易失性特性使得在电源故障和系统崩溃的情况下实现持久化数据结构成为可能。

问题

1.数据结构不一致问题

上图描述了如果在插入到排序树节点J的中间发生故障可能会发生什么。

正常情况:通常,插入算法会将9、7和4向右移动一个插槽,插入3,并增加数字字段,导致图3顶部所示的正确结束状态。

三种故障导致的情况:

①在第一种情况下,故障发生在算法移动4之前。

②在第二种情况下,故障发生在算法增加数字字段之前。

③在第三种情况下,算法实际上已经完成了插入,但并非所有数据都已写回NVMM。注意,观察图像左侧树节点结构,可以发现节点J由两条高速缓冲行组成。如果高速缓冲行1已写回NVMM,但发生故障时高速缓冲行2仍在CPU高速缓存中,就会出现③所示问题

上述三种情况导致三种不同的不一致状态。同样,很容易表明从具有不同故障情况的多个启动状态可以达到相同的不一致状态。因此,仅使用不一致树节点的信息是不可能的。

举例:

5124479(故障发生在写入3之前)
5124(未写回NVMM) 479(已写回NVMM)

说明如果没有仔细的设计,数据结构在故障后可能处于不一致的不可恢复状态

2.算法性能问题

为解决上面的数据结构不一致问题

乍一看,使用传统技术(如撤销-重做日志(Undo-Redo Logging)和影子拷贝(Shadowing))来支持持久化 B+-树似乎是一个直接的方法。

然而,文章发现在NVMM中支持持久化 B+-树的问题与基于磁盘的 B+-树有很大不同:

  1. CPU缓存控制的限制:软件对CPU缓存的控制能力有限。通常无法保证修改后的CPU缓存行何时以及以何种顺序写回主存。虽然可以通过特殊的  CPU缓存刷新(clflush)和内存栅栏指令(mfence)来强制写回顺序,但这些指令会带来显著的性能开销。

  2. 不同NVM技术的特性:例如,PCM的写入速度较慢,且存在能耗和耐久性问题;相比之下,STT-MRAM和忆阻器的性能接近DRAM。因此,减少写操作是PCM的一个重要目标,但对于快速的类DRAM NVM来说可能并不那么重要。

思路

1.首先解决数据结构一致性问题

为了防止 NVMM 写操作在故障中丢失,文章利用了两条x86指令:

        一般情况下修改后的缓存行不会立刻写回到NVMM中,CPU在将存储指令发送到缓存时即认为存储操作已完成,然而如果此时缓存中的脏缓存行还没有写回NVMM,此时系统故障,则可能就会产生数据结构不一致的问题。

*clflush(cache line flush):解决长时间不写回。
给定一个内存地址,clflush 指令会使包含该地址的缓存行在所有缓存层中失效,并将该失效操作广播到系统的所有 CPU 核心。如果指定的缓存行是脏的(即被修改过),则在失效之前会将其写回到主存。

        在多核处理器系统中,CPU 可能会为了优化性能,对内存访问操作进行重排序。这意味着,即使在代码中 A 操作在 B 操作之前,CPU 可能会先执行 B 再执行 A(如果它认为这样可以更快完成)。mfence 用于防止这种重排序,确保在 mfence 之前的所有内存读写操作在全局范围内可见,并在其之后的任何操作开始之前完全完成。

*mfence(memory fence):解决写回顺序不确定。
mfence 指令确保在其之前的所有内存读取和写入操作在全局范围内可见,然后再进行其后的任何内存操作。然而,mfence 本身并不会将脏缓存行写回内存。
意味着在 mfence 之前发出的 clflush 指令会被强制立即生效,确保数据在系统崩溃前被安全地写入 NVMM。

何时使用这两条指令?
数据修改操作完成后立即执行。

同样也是为了确保修改的数据被持久化到 NVMM 中,而不是仅仅停留在 CPU 缓存中。
防止系统崩溃或断电时,数据仍然滞留在缓存中而未写回 NVMM,导致数据丢失。

如何确定顺序(确定顺序的依据):

不越界

读取数组越界是一种未定义行为(Undefined Behavior),这意味着程序可能会有多种不可预测的行为。

以下为越界的部分可能

1.如果遍历操作访问的内存地址超出了程序的可访问范围,操作系统会检测到非法内存访问,从而触发段错误(Segmentation Fault)或访问冲突(Access Violation)。

2.如果越界读取的内存区域恰好落在有效的内存地址范围内(例如属于其他数据结构的区域),则可能不会立即引发崩溃,但可能会读取到意外的内存数据,导致最终程序的结果错误。

举例:

插入insert:键增加,为了保证不越界,先更新键值、结点指针
删除delete:键减少,为了保证不越界,先更新键数量字段

为了确认clflush 和 mfence 对性能的影响进行了如下实验:

图4 展示了在一台 Intel Xeon X86-64 机器上执行 clflush 和 mfence 指令对性能的影响。

文章进行了顺序写入和随机写入的实验。

图4 中:

  • Y 轴表示访问每个记录的平均耗时。
  • X 轴表示在两个 mfence 之间被 clflush 刷新的缓存行数。
  • 顺序写入的三条曲线(下方)和随机写入的三条曲线(上方)分别展示了以下情况:
    1. 仅进行写入操作。
    2. 每次写入记录后执行 clflush。
    3. 对于情况 (2),每写入 i 个记录后插入一次 mfence(i 从 1 变到 16)
实验结果分析:
  • 从图中可以看到,clflush 会显著减慢顺序写入的速度,因为 clflush 强制将脏缓存行写回内存。这会打断 CPU 和内存控制器对顺序内存访问的优化(例如,合并多个访问到同一个已打开的内存行)。
  • 相比之下,由于随机写入不利于这些优化,clflush 对其影响较小。
  • 插入 mfence 后会进一步增加开销,因为 mfence 需要等待之前的 clflush 完成。在两个 mfence 之间增加 clflush 的记录数可以减少这一开销。因此,降低 mfence 的相对频率是很重要的。

2.提出分析实现持久数据结构的算法的指标

结合上文我们可以知道写入次数、clflush指令和mfence指令数量会显著影响算法的开销。

由此为了验证后文提出的wB+-Tree的性能比传统的实现持久数据结构的算法(undo-redo log & shadowing)更好,依据上文的分析,提出了三个指标:

写数量writes(Nw) 

clush数量clflush(Nclf)   

mfence数量mfence(Nmf)

这三个指标越小,说明算法的开销越小

MVS学习(一):综述论文阅读记录 MVS学习(一):综述论文Multi-View Stereo: A Tutorial阅读记录AbstractIntroductionSfM简介Openmvs简介和安装Multi-view Photo-consistency Abstract 这个摘要很值得好好理解,原文: This tutorial presents a hands-on view of the field of multi-view stereo with a focus on practical algorithms. Multi-vi 阅读详情

相关推荐

强化学习论文阅读笔记(一)——强化学习研究综述_高阳

强化学习研究综述_高阳 目录 强化学习研究综述_高阳 一、与其他机器学习对比 二、分类 三、最优搜索型强化学习算法 四、经验强化型强化学习算法 五、部分感知 六、函数估计 七、多Agent强化学习 八、符号学习和强化学习偏差 九、强化学习应用 一、与其他机器学习对比 vs 监督学习:无需训练集,在线学习 vs 规划技术:无需构造复杂的状态图,强调行为与环境交互 ...

Star_Drift0的博客 2423

文献阅读经验--以基于深度学习的医学图像配准为例

目录正文前言一、应该阅读什么样的论文二、为什么要阅读论文三、怎样阅读论文(以期刊和会议论文为准)总结 正文 前言 大家好,我是一名研一的学生,我的研究方向是基于深度学习的医学图像配准(全脑配准),我对这个研究方向特别感兴趣,我刚接触这个研究方向不久,但是自己也有一套自己的阅读论文的方法,下面我就以我的研究方向为准来谈一下我对于阅读论文的经验。 一、应该阅读什么样的论文 首先就是要找论文,找论文的渠道有很多,例如知网、万方等,直接把自己研究方向的关键词输入到知网就可以了,我建议大家如果刚接触自己的研究方向,应

SHYBOYXH的博客 910

3D点云学习:SECOND目标检测①论文阅读

论文: 论文链接. 源码: 源码链接. 由于本来是准备研究PV-RCNN网络的,可是发现源码还没有开源。但是在PCDet.上发现包含了SECOND等几个网络 源码2: 源码链接2. 1 摘要 基于LiDAR或基于RGB-D的目标检测被用于从自动驾驶到机器人视觉的众多应用中。 在处理点云LiDAR数据时,基于Voxel的3D卷积网络已经使用了一段时间,体素方法能够在处理雷达点云数据时的保留更多的信息。 但是,仍然存在问题,包括推理速度慢和方向估计性能低。因此,我们研究了一种改进的稀疏卷积方法用于这种网络,这显

themasterbi的博客 7632

[深度学习医学影像]一小时从阅读论文到代码搭建到迁移到自己的数据

目前和CV有关的步骤分为preprocess预处理,training训练,predict/inference推理,而迁移模型,你其实只需要做trianing中的build model那一块。直接找到他的搭建模型的步骤,,你往往可以使用你正在运行项目的环境,再额外安装几个库,包便可。(这往往根据经验,版本冲突需另行考虑,你要注意你新安装的包并不会导致你的旧包被代替导致你的旧项目运行不了)你只需要使用阅读论文的pass1方法,看title,author,abstract,conclusion,模型图,表便可。

qq_43369406的博客 392

并行多任务学习论文阅读(一):多任务学习速览

最近导师让我做并行多任务学习方面的工作,我开始着手阅读这方面的论文并归纳一个大致的速览。首先,我们看看什么是多任务学习,然后我们主要聚焦于基于正则化的多任务学习方法(这也是目前学术界主要的并行对象),并在此基础上讨论如何分布式并行。 1、多任务学习介绍 类似于迁移学习,多任务学习也运用了知识迁移的思想,即在不同任务间泛化知识。但二者的区别在于: 迁移学习可能有多个源域;而多任务学习没有源域而只...

猎户座的博客 709

【论文工具】免费的论文阅读翻译神器,辅助论文阅读速度嗷嗷快

【论文工具】免费的论文阅读翻译神器,辅助论文阅读速度嗷嗷快,你值得拥有。

静谧、淡雅 730

论文阅读之迁移学习(一)

深度学习以其用少量资源处理大量地震数据的优势,为地震速度模型重建提供了一种新方法。神经网络自动对地震数据进行建模(反问题的映射:地震数据->速度模型)。但它不适用于2D和3D真实数据。本文提出一种迁移学习策略(TL)网络构想:首先在较小的子问题(1D数据)上训练,其次将训练好的模型作为更大、更复杂数据的初始模型,类似于FWI的层次化多尺度模型。网络实施:建立逐层复杂的子目标;先训练一个用于估计水平层的速度模型,再训练用于估计2D 倾斜层模型(dipping layered)。TL策略优点。

qq_52245889的博客 455

基于GEC6818开发板的C/C++贪吃蛇小游戏

f.开始游戏(进入游戏,并没有马上开游戏,需要点击播放才能开始)2.相关宏,全局变量(可以根据自己需要进行修改)k.显示文字前的相关初始化。k.自定义font.h文件。1.需要的主要头文件。l.在开发板上显示字1。m.在开发板上显示字2。a.显示固定大小图片。h.线程1:获得坐标。

2301_77273301的博客 2132

度量学习、细粒度识别相关论文阅读笔记(一)——SoftTriple Loss

度量学习、细粒度识别相关论文阅读笔记(一)——SoftTriple Loss 之前调研了几篇度量学习、细粒度识别相关领域的最新论文,现将之前做的论文笔记分享出来供大家一起探讨。 因为之前没有涉及过相关领域,如果有的地方理解不够准确希望大家指正。 Triple Loss Triple Loss Triplets挖掘 训练方法 Offline Online SoftTriple Loss n...

CV小菜鸟的博客 4192

戴尔PowerEdge服务器R450 RAID配置步骤

戴尔PowerEdge服务器R450 RAID配置步骤

且听风呤tmj的博客 6911

【SAP PO】SAP PO 接口配置完整教程之一RFC服务发布

SAP RFC开发,PO接口配置

XLevon的博客 2万+

分享一些高效阅读论文和代码的方法

来自:大猿搬砖简记我们来聊聊一个比较轻松、也是很多朋友关注的话题:如何能更高效阅读一篇论文、学习一份源码呢?以我自己的经验来看,有效的方法无外是3点:写笔记。按照自己的思路重新捋顺一个新东西的逻辑,并尽最大可能查缺补漏。多动手。少点幻想,多去实践。代码看不懂就跑,公式不理解就推,有难以验证的猜想就去做实验。有耐心。这是最重要的一点,很多我们认为难的东西,其实只是因为我们缺少了解它的耐心。下面围绕这...

zenRRan的博客 894

Anaconda安装教程(超详细版)

目录 一、Anaconda简介 二、运行环境 三、安装Anaconda 四、手动配置环境变量(重点) 五、测试Anaconda环境是否配置成功 一、Anaconda简介 Anaconda,一个开源的Python发行版本,可用于管理Python及其相关包,包含了conda、Python等180多个科学包及其依赖项。 二、运行环境 Windows11 (Window10用户亦可参考,仅环境变量打开位置不同)。 三、安装Anaconda (1)百度“Anaconda”或者输入网址

m0_61607990的博客 22万+

深度学习论文阅读笔记(一):Deep learning

本文是于2015年发表在nature上,文章对表示学习、监督式学习、反向传播训练结构、卷积神经网络(CNN)、循环神经网络(RNN)以及深度学习的主流应用图像处理和自然语言处理(NLP)其原理进行了简要的说明。

qq_49641705的博客 604

LLaMA-Factory全面指南:从训练到部署

LLaMA-Factory项目是一个专注于大模型训练、微调、推理和部署的开源平台。其主要目标是提供一个全面且高效的解决方案,帮助研究人员和开发者快速实现大模型的定制化需求。简化大模型训练流程:通过提供一系列预设的训练脚本和参数配置,降低用户在训练大模型时的技术门槛,使得即使是初学者也能轻松上手。增强模型微调能力:支持多种微调方法,如LoRA、QLoRA等,使用户能够根据特定任务需求对模型进行精细调整,从而提升模型性能。优化推理和部署体验。

全世界的博客 1万+

期货分仓系统CTP协议/国内期货软件源码

期货分仓系统与CTP协议以及国内期货软件源码是期货交易技术领域的几个重要方面。

q2247238820的博客 962

强化学习自动驾驶论文阅读(一)

(一)paper传送门 Guided Policy Search Model-based Reinforcement Learning for Urban Autonomous Driving (二)背景知识 强化学习(RL)---------------------------《Reinforcement Learning:An Introduction》第二版 Gaussian Mixed Model(GMM) --------- https://www.jianshu.com/p/9708bb0676

weixin_45042545的博客 3279

ubuntu linux虚拟机安装部署openclaw详细教程(安装、问题处理)

本文详细介绍了在Ubuntu系统下安装OpenClaw AI助手的完整流程及常见问题解决方案。主要内容包括:1) 通过GIT、Node.js等基础环境配置;2) 使用官方脚本或源码编译两种方式安装OpenClaw;3) 配置向导中的关键选项说明;4) 针对systemctl服务启动失败等常见错误的处理方法。文章特别强调了权限管理、网络依赖和访问配置等易错环节,提供了修改service文件等具体解决方案,帮助开发者顺利完成部署并实现Web UI访问。教程实操性强,适合本地和云服务器环境部署参考。

少说,多做 2032

多智能体强化学习论文阅读(一)

NeurIPS2022会议论文 多智能体强化学习

weixin_42903952的博客 1270

智能预测性维护AI系统实战效率提升:AI应用架构师的技巧分享

在工业领域,预测性维护(Predictive Maintenance, PdM)是降低停机损失、优化维护成本的关键手段。然而,现有系统往往面临三大效率瓶颈数据处理延迟:工业设备产生的海量实时数据(如传感器、PLC)需传输至云端处理,导致预警滞后;模型推理效率:复杂深度学习模型(如ResNet、Transformer)在边缘设备上推理时间长,无法满足实时要求;落地集成困难:与企业现有ERP、MES、SCADA系统对接繁琐,导致“模型好用但业务不用”的尴尬。本文从架构、数据、模型、落地架构设计。

AI天才研究院 744

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

论文阅读 (一)对比学习系列 MoCo and 从InsDisc到 SimSiam DINO

对比学习讲解视频: MoCo video: https://www.bilibili.com/video/BV1C3411s7t9?spm_id_from=333.999.0.0 专栏 https://www.bilibili.com/read/cv14463867?from=note 对比学习串烧 video: https://www.bilibili.com/video/BV19S4y1M7hm?spm_id_from=333.999.0.0 ...

Ray Home 920

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【联邦学习论文阅读(一)】联合设备调度与带宽分配

带宽资源限制、异构计算能力、不确定的信道状态使设备调度和带宽分配变得复杂。本文提出一种联合 设备调度和带宽分配 的框架,在无线网络中实现FL。采用DRL进行设备调度。DRL代理采用LSTM分析顺序输入数据。考虑到每次全局迭代的预定设备,带宽分配方法旨在最小化时间延迟和能量消耗的加权和。在IID和非IID数据集上进行实验表明,所提框架可使FL以较低的时间延迟和能耗达到所需的精度。

weixin_43792275的博客 1457

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

读研攻略--如何选择你的研究方向并展开学习

       我目前就读于中南大学软件工程专业,研究方向是AIOps,主要涉及时间序列的预测和异常检测。因为经历过研一的迷茫,因此想向还处于这个阶段的后进们传递一些我的经验,希望能让你们少踩一点坑,更快的走上研究之路。        首先,不要纠结选哪个方向,不要想哪个更热门、哪个更好找工作,因为你想破了脑袋、最后决定的是你的导师。一般来说,导师的研究方向就是你的方向,

行者无疆的博客 3195

无监督异常定位的深度学习(一)_综述论文阅读

无监督深度学习异常定位

m0_47710003的博客 1240

【经验】刚读硕士怎么感觉学机器学习和深度学习越学越不懂?

有同学问:研一,在学机器学习和深度学习,为什么感觉越学越不会,怎么解决这个问题?我搜集了一些意见和建议,供参考。高赞回答一 作者:曲終人不散丶来源:知乎我的研一我记得是先找了一本比较薄的...

fengdu78的博客 4300

深度学习目标检测系列论文阅读和Pytorch实现(一)

深度学习中目标检测通常分单阶段和两阶段算法。这里整理最近研究的单阶段系列算法,包含论文的简单介绍和Pytorch代码实现。 算法路线为SSD=>FPN=>RetinaNet=>EfficientDet. 目前正在复现EfficientDet论文。 1、SSD论文解读 2、SSD算法实现和训练自己的数据集 3、FPN论文解读:https://blog.csdn.net/I...

IEEE_FELLOW的博客 814
上一篇: C语言模拟进程调度的实现(抢占式动态优先级调度、时间片轮转调度)
下一篇: 论文学习(二)
Rum1
博客等级 码龄4年 54粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值