链桨PaddleDTX系列-基本概念介绍

Posted 拚却醉颜红7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链桨PaddleDTX系列-基本概念介绍相关的知识,希望对你有一定的参考价值。

链桨PaddleDTX包含区块链、去中心化存储、隐私计算三大重要模块,为理解其运行原理,需先了解一些基本概念。

一、区块链相关概念

区块链:区块链可以理解为一种新型的分布式数据库,全网通过特定共识机制(如pow、pos、vrf等)对账本和交易等状态达成一致,区块链利用哈希等密码学机制,保证链上数据的不可篡改。所有区块链全节点都保存区块链完整数据信息,即便有一方篡改数据,也不会被其他节点承认。PaddleDTX支持XuperChain和Fabric作为底层区块链架构。

智能合约:智能合约是运行在区块链上,旨在以信息化方式传播、验证或执行合同的计算机协议。PaddleDTX中节点的去中心化治理、数据的副本保持证明机制、计算任务管理等都基于智能合约完成。

二、去中心化存储相关概念

PaddleDTX的存储网络有三类主要节点:

  • 数据持有节点:数据的归属方,有存储数据的需求;
  • 存储节点:有丰富的闲置的存储资源,可以提供存储服务;
  • 区块链节点:构成区块链网络,基于不同的区块链框架,他们有不同的定义。

副本保持证明:为保证文件被存储节点安全存储且未被篡改,PaddleDTX采用了副本保持证明挑战和应答机制。数据持有方定期向存储节点发起数据完整性证明挑战,存储节点对挑战进行应答,整个流程记录在区块链上,并通过智能合约进行自动化验证。

文件迁移:为保证文件的安全和高可用,数据持有方会定期检查己方文件的健康状态,并将非健康的文件切片从不健康的存储节点迁移到健康节点,保证每个文件都处于健康且可随时恢复的状态。

健康度:PaddleDTX支持存储节点和文件的健康状态监控,保证系统的高可用

  • 存储节点健康状态:存储节点健康状态根据节点的活跃度和副本保持证明应答成功比例来衡量,文件分发时会优先选择健康的存储节点;
  • 文件健康状态:文件健康状态根据每个切片的健康状态来衡量,每个切片的健康状态由其所在的存储节点健康状态决定。

三、隐私计算相关概念

PaddleDTX的计算网络有三类主要节点:

  • 计算需求节点:有训练模型和预测的需求;
  • 任务执行节点:拥有使用数据的权限,参与多方安全计算,进行模型训练和数据预测;
  • 区块链节点:构成区块链网络,基于不同的区块链框架,他们有不同的定义。

PaddleDTX网络中包含两种计算任务:

  • 模型训练任务:通过训练得到目标模型;
  • 预测任务:通过预测得到数据的目标值。

模型评估:PaddleDTX支持对训练得到的模型效果进行分布式评估,支持动态评估和静态评估两种模式

  • 动态模型评估:动态评估伴随训练任务同时进行,在指定的训练阶段触发模型评估,并获得当前阶段训练结束后的评估指标。训练过程中可以获取每个阶段模型的评估结果,以此判断是否终止训练;训练任务结束时,可获得一系列评估指标,展示训练效果变化趋势。PaddleDTX支持随机划分的动态模型评估方式;
  • 静态模型评估:静态评估在训练任务结束后进行,评估器会划分训练样本、创建并运行训练任务和对应的预测任务,最后计算评估指标。PaddleDTX支持随机划分、交叉验证和留一法三种静态评估方式。

数据集:PaddleDTX中的训练样本和预测数据集都是以文件的形式存储于中心化存储网络,在发布训练任务或者预测任务的时候,由计算需求节点指定。

PaddleDTX开源了三种机器学习算法:

  • 多元线性回归:多元线性回归用来描述一个变量受多个因素影响,且他们的关系可以用多元线性方程表示的场景;
  • 多元逻辑回归:多元逻辑回归模型是基于线性回归模型变化得到的,不同于多元线性回归,多元逻辑回归的目标特征值是离散的,通常定义为1,0,分别表示目标特征是否为指定值;
  • 神经网络:神经网络是一种由大量的节点(或称为神经元)相互联接构成的运算模型,理论上可以逼近任意函数。

PaddleDTX对三种算法均进行了纵向联邦学习的改造,暂不支持横向联邦学习。

  • 纵向联邦学习:参与方的样本重叠较多,而特征重叠较少。将样本按照纵向切分,取出各方样本相同而特征不同的那部分数据进行训练;
  • 横向联邦学习:参与方的特征重叠较多,而样本重叠较少。将样本按照横向切分,取出各方特征相同而样本不同的那部分数据进行训练。

Git学习系列-Git基本概念

本系列基于Pro Git介绍如何使用Git进行源代码管理,以及后期如何使用Git进行项目管理。

系列初步目录如下:

1. Git基本概念

2. Git分支操作

后续待定。

Git的历史就不在这里进行介绍了,网上随处都可以找到,以下是在使用Git的时候的一些基本概念和方法

Git有三种状态,文件可能处于其中之一:已提交(Committed)、已修改(modified)和已暂存(staged).已提交表示数据已经安全的保存在本地数据库中。已修改表示已经修改了文件,但还没有保存在数据库中。已暂存表示对一个已修改文件的当前版本做了标记,使之包含现在下次提交的快照中。
由此引入Git项目的三个工作区域的概念:Git仓库、工作目录以及暂存区域
技术分享
初次运行Git之前的配置
通过Git自带的git config命令来完成Git的初始化工作,配置主要存储在三个不同位置
/ect/gitconfig文件:包含系统上每一个用户及仓库的通用配置,如果使用--system选项时,就会从此文件读写配置变量
~/.gitcongig或~/.config/git/config文件:只针对当前用户,可以使用--global选项读写配置变量
当前使用仓库的Git目录中的config文件(就是.git/config文件):针对该仓库
配置用户信息
git config --global user.name "John Doe"
git config --global user.email [email protected]
检查配置信息
git config --list查看GIt的所有配置信息或是使用git config <key>来查看特定的信息
初始化仓库
git init
向仓库中添加文件并提交
1 git add *.c
2 git add README
3 git commit -m "initial project"
记录更新到仓库
使用Git的时候文件的生命周期如下:
技术分享
检查当前文件状态
1 git status
跟踪新文件
git add 文件名 此时文件处于stage状态
暂存已修改的文件
git add 已修改的文件, 此时文件处于stage状态
恢复处于Modified状态的文件
git checkout — <文件名> 会将已经修改的文件但是并没有提交到缓冲区的文件重置为原来的状态
将处于缓冲区的文件重置到工作区
 git reset HEAD <文件名> 或是 git reset <文件名>
使用忽略文件 .gitignore,具体规则如下:
  • 所有空行或者以#开头的行都会被Git忽略;
  • 可以使用glob模式匹配;
  • 匹配模式可以以(/)开头防止递归;
  • 匹配模式可以以(/)结尾指定目录;
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反
一个.gitignore文件的例子:
# no .a file
*.a
 
#but do track lib.a, even though you’re ignoring .a files above
!lib.a
 
# only ignore TODO file in the currency directory, not subdir /TODO
/TODO
 
#ignore all files in the build/ dictionary
build/
 
#ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt
 
#ignore all .pdf files in the doc/ directory
dic/**/*.pdf
 
git diff命令比较的是工作目录中当前文件和暂存区域之间的差异,也就是修改之后还没有暂存起来的内容的变化。若要查看已暂存的将要添加到下次提交的内容,可以使用git diff--cached命令或是git diff —staged
 
跳过使用暂存区域
在使用git commit进行提交修改的时候,可以使用命令参数-a从而跳过将修改提交到暂存区,直接提交到版本库中,从而省略git add的过程
 
查看提交历史
通过使用git log命令可以查看之间提交的历史,使用-p参数显示每次提交的差异。另外一个常用的选项是git log —pretty=oneline将每个提交都在一行的形式进行显示。下面是git log的常用选项
选项
说明
-p
按补丁形式显示每个更新之间的差异
--stat
显示每次更新的文件修改统计信息
--shortstat 只显—stat中最后的行数修改添加移除统计
--name-only
仅在提交信息后显示已修改的文件清单
--name-status
显示新增、修改、删除的文件清单
--abbrev-commit
仅显示SHA-1的前几个字符,而非所有的40字符
--relative-date
使用较短的相对时间显示
--graph
显示ASCII图形便是德分支合并历史
--pretty 使用其他格式显示历史提交信息。可用的选项包括online、short、full、fuller和format
撤销操作
当提交完成之后发现漏掉文件没有提交或者提交信息写错了,可以使用git commit —amend选项的命令尝试重新提交
git commit -m “Init Repo”
git add forgotten_file
git commit —amend
最终只会有一个提交,第二次提交将替换第一次的提交
标签操作
列出现在已有的标签: git tag. 可以使用特定的模式来查看特定的标签,例如:git tag -l “v1.1”
Git使用两种主要标签:轻量标签(lightweight)和附注标签(annotated),一个轻量标签只是一次提交的引用,附注标签是存储在Git数据库中的一个对象,包含创建者,时间等信息,因此推荐使用附注标签。
使用git tag -a v1.4 -m “my version 1.4”来创建附注标签,使用命令git show来显示标签的相关信息。直接使用git tag v1.4来创建轻量标签。也可以对之前的某个提交打标签,使用命令git tag -a v1.4 9fceb02
检出标签
使用命令git checkout -b [branchname] [tagname]在特定的标签上创建一个新分支

以上是关于链桨PaddleDTX系列-基本概念介绍的主要内容,如果未能解决你的问题,请参考以下文章

什么是51%算力攻击?——区块链系列学习笔记

区块链基本概念学习笔记

区块链基本概念学习笔记

区块链Defi经典应用介绍

区块链中节点和区块的关系&区块链的基本概念

#yyds干货盘点#愚公系列2023年02月 .NET/C#知识点-区块链概念和实现