diff --git a/docs/all-in-one/deployment_package.md b/docs/all-in-one/deployment_package.md index c7e8e62..54262c7 100644 --- a/docs/all-in-one/deployment_package.md +++ b/docs/all-in-one/deployment_package.md @@ -1,10 +1,12 @@ # 什么是 SecretPad All In One -SecretPad all in one 包是隐语平台部署包,可快速部署成隐语平台。目前隐语提供了基于 x86 和基于 arm 芯片的安装包,其中 arm 的安装包暂未集成 TrustedFlow。 +SecretPad all in one 包是隐语平台部署包,可快速部署成隐语平台。目前隐语提供了基于 x86 和基于 arm 芯片的安装包,其中 arm 的安装包暂未集成 TrustedFlow。 +![allinone_x86](./imgs/download_image.png)[点此下载 x86_64 安装包](https://secretflow-public.oss-cn-hangzhou.aliyuncs.com/mvp-packages/secretflow-allinone-linux-x86_64-v1.9.0.tar.gz) -![allinone_x86](./imgs/download_image.png)[点此下载 x86_64 安装包](https://secretflow-public.oss-cn-hangzhou.aliyuncs.com/mvp-packages/secretflow-allinone-linux-x86_64-v1.8.0.tar.gz) +![allinone_arm](./imgs/download_image.png)[点此下载 arm_64安装包](https://secretflow-public.oss-cn-hangzhou.aliyuncs.com/mvp-packages/secretflow-allinone-linux-aarch_64-v1.9.0.tar.gz) +如果您需要下载历史版本[请点击](history_download.md) -![allinone_arm](./imgs/download_image.png)[点此下载 arm_64安装包](https://secretflow-public.oss-cn-hangzhou.aliyuncs.com/mvp-packages/secretflow-allinone-linux-aarch_64-v1.8.0.tar.gz)
all in one 包最大的特色是提供了从算法到调度,到平台页面的一整套系统,可视化操作平台是最大的特点。根据业务本身要求不同,隐语提供中心化模式和 p2p 模式的安装部署能力。在部署安装包的时候,可选择不同的部署模式,如部署成 P2P 的模式(无需可信第三方,无 Center 平台)或者中心化的模式(有 Center 平台)。安装部署完成后,可在隐语平台快速体验隐语核心能力。 +all in one 包最大的特色是提供了从算法到调度,到平台页面的一整套系统,可视化操作平台是最大的特点。根据业务本身要求不同,隐语提供中心化模式和 p2p 模式的安装部署能力。在部署安装包的时候,可选择不同的部署模式,如部署成 P2P 的模式(无需可信第三方,无 Center 平台)或者中心化的模式(有 Center 平台)。安装部署完成后,可在隐语平台快速体验隐语核心能力。 ## 平台简介 diff --git a/docs/all-in-one/history_download.md b/docs/all-in-one/history_download.md new file mode 100644 index 0000000..01e212d --- /dev/null +++ b/docs/all-in-one/history_download.md @@ -0,0 +1,11 @@ +# 历史版本下载 +这里是SecretPad all in one 包的历史版本下载页面。 +## v1.6.0 +[点此下载 x86_64 安装包](https://secretflow-public.oss-cn-hangzhou.aliyuncs.com/mvp-packages/secretflow-allinone-linux-x86_64-v1.6.0.tar.gz) +[点此下载 arm_64 安装包](https://secretflow-public.oss-cn-hangzhou.aliyuncs.com/mvp-packages/secretflow-allinone-linux-aarch_64-v1.6.0.tar.gz) +## v1.7.0 +[点此下载 x86_64 安装包](https://secretflow-public.oss-cn-hangzhou.aliyuncs.com/mvp-packages/secretflow-allinone-linux-x86_64-v1.7.0.tar.gz) +[点此下载 arm_64 安装包](https://secretflow-public.oss-cn-hangzhou.aliyuncs.com/mvp-packages/secretflow-allinone-linux-aarch_64-v1.7.0.tar.gz) +## v1.8.0 +[点此下载 x86_64 安装包](https://secretflow-public.oss-cn-hangzhou.aliyuncs.com/mvp-packages/secretflow-allinone-linux-x86_64-v1.8.0.tar.gz) +[点此下载 arm_64 安装包](https://secretflow-public.oss-cn-hangzhou.aliyuncs.com/mvp-packages/secretflow-allinone-linux-aarch_64-v1.8.0.tar.gz) \ No newline at end of file diff --git a/docs/all-in-one/index.rst b/docs/all-in-one/index.rst index 2b6c94b..645ad83 100644 --- a/docs/all-in-one/index.rst +++ b/docs/all-in-one/index.rst @@ -11,3 +11,4 @@ All in one 文档 ./more_tutorials/index definition.md ./version_update/index + history_download diff --git a/docs/all-in-one/more_tutorials/new_components.md b/docs/all-in-one/more_tutorials/new_components.md index 24961eb..4fcda6b 100644 --- a/docs/all-in-one/more_tutorials/new_components.md +++ b/docs/all-in-one/more_tutorials/new_components.md @@ -56,7 +56,7 @@ - 修改隐语代码 - 打包隐语镜像 - 更新隐语SecretPad平台组件列表 -- 在调度框架Kusica中注册新的组件镜像 +- 在调度框架Kuscia中注册新的组件镜像 # 需求描述 @@ -97,28 +97,17 @@ bob: ![Structure](../imgs/structure.png) -1.Kuscia -Adapter:将kuscia的数据结构转化为SecretFlow组件数据结构。代码位于:https://github.com/secretflow/secretflow/blob/main/secretflow/kuscia/entry.py。 -你不需要修改这里。 +1.Kuscia Adapter:将kuscia的数据结构转化为SecretFlow组件数据结构。代码位于:https://github.com/secretflow/secretflow/blob/main/secretflow/kuscia/entry.py 你不需要修改这里。 -2.SecretFlow Comp -Entry:读取SecretFlow组件数据结构,调用对应的组件。代码位于:https://github.com/secretflow/secretflow/blob/main/secretflow/component/entry.py。 -你需要在这里声明组件。 +2.SecretFlow Comp Entry:读取SecretFlow组件数据结构,调用对应的组件。代码位于:https://github.com/secretflow/secretflow/blob/main/secretflow/component/entry.py 你需要在这里声明组件。 -3.SecretFlow -Comps:所有隐语组件。代码位于:https://github.com/secretflow/secretflow/tree/main/secretflow/component。 你需要在这个文件夹下创建你的新组件。 +3.SecretFlow Comps:所有隐语组件。代码位于:https://github.com/secretflow/secretflow/tree/main/secretflow/component 你需要在这个文件夹下创建你的新组件。 -4.SecretFlow -Libraries:隐语API。你可以利用所有隐语现有的各类算法来构造组件。你可以在这个[链接](https://www.secretflow.org.cn/zh-CN/docs/secretflow/v1.4.0b0/user_guide) -了解隐语的第一方库。你可能需要调整这部分代码。 +4.SecretFlow Libraries:隐语API。你可以利用所有隐语现有的各类算法来构造组件。你可以在这个[链接](https://www.secretflow.org.cn/zh-CN/docs/secretflow/v1.4.0b0/user_guide)了解隐语的第一方库。你可能需要调整这部分代码。 -5.SecretFlow Devices: -隐语设备,隐语将本地明文计算抽象为PYU运算,密态计算抽象为密态设备的运算:SPU(MPC,多方安全计算),HEU(HE,同态加密),TEEU(TEE,可信执行环境),如果你不了解,请阅读这个[文档](https://www.secretflow.org.cn/zh-CN/docs/secretflow/v1.4.0b0/developer/design/architecture) -。你一般不需要修改这部分代码。 +5.SecretFlow Devices:隐语设备,隐语将本地明文计算抽象为PYU运算,密态计算抽象为密态设备的运算:SPU(MPC,多方安全计算),HEU(HE,同态加密),TEEU(TEE,可信执行环境),如果你不了解,请阅读这个[文档](https://www.secretflow.org.cn/zh-CN/docs/secretflow/v1.4.0b0/developer/design/architecture)。你一般不需要修改这部分代码。 -6.Ray/RayFed。[Ray](https://www.ray.io) -是隐语的底座,负责在一个kuscia拉起的隐语节点中调度资源,每一个计算参与方都是一个Ray集群。[RayFed](https://rayfed.readthedocs.io/en/latest) -负责Ray集群之间的通信和协调。 +6.Ray/RayFed:[Ray](https://www.ray.io)是隐语的底座,负责在一个kuscia拉起的隐语节点中调度资源,每一个计算参与方都是一个Ray集群。[RayFed](https://rayfed.readthedocs.io/en/latest)负责Ray集群之间的通信和协调。 ## 开发环境 @@ -132,24 +121,23 @@ Libraries:隐语API。你可以利用所有隐语现有的各类算法来构 - bazel==5.4.1 - golang -你可以参考[release-ci.DockerFile](https://github.com/secretflow/devtools/blob/main/dockerfiles/release-ci.DockerFile) -来配置你的环境。 +你可以参考[release-ci.DockerFile](https://github.com/secretflow/devtools/blob/main/dockerfiles/release-ci.DockerFile)来配置你的环境。 2.当你配置好环境之后,请拉取代码 ```shell $ git clone https://github.com/secretflow/secretflow.git -$ git checkout release/1.5.x +$ git checkout release/1.9.x $ cd secretflow ``` -注:git clone后,需要切换至已发版的稳定分支(隐语每次正式发版的分支),分支号查看方法如下: -a、点击https://github.com/secretflow/secretpad/blob/main/README.md#versions 查看你使用的 SecretPad 对应 SecretFlow 版本 +注:git clone后,需要切换至已发版的稳定分支(隐语每次正式发版的分支),分支号查看方法如下: +a、点击https://github.com/secretflow/secretpad/blob/main/README.md#versions 查看你使用的 SecretPad 对应 SecretFlow 版本 eg:如你使用的是 0.6.0b0 的 SecretPad ,对应 SecretFlow 版本为 1.5.0b0 -![secretpad_version](../imgs/secretpad_version.png) -b、点击https://github.com/secretflow/secretflow 查看 SecretFlow 的稳定分支号 +![secretpad_version](../imgs/secretpad_version.png) +b、点击https://github.com/secretflow/secretflow 查看 SecretFlow 的稳定分支号 eg:如使用 SecretPad 对应 SecretFlow 版本为 1.5.0b0,则分支号为 release/1.5.x -![secretflow_release](../imgs/secretflow_release.png) +![secretflow_release](../imgs/secretflow_release.png) 3.尝试编译并安装隐语 @@ -178,7 +166,7 @@ $ pip uninstall secretflow ### 新建文件 -在 secretflow/component/ 文件夹下新建文件 compare.py +在 secretflow/component/ 文件夹下新建文件 compare.py ```shell $ cd secretflow/component/ @@ -207,10 +195,10 @@ ss_compare_comp = Component( 这段代码表明了: -- 组件名称: ss_compare -- domain: user ,可以理解为命名空间/分类 -- version: 0.0.1 -- desc: compare two tables. 组件描述。 +- 组件名称: ss_compare +- domain: user ,可以理解为命名空间/分类 +- version: 0.0.1 +- desc: compare two tables. 组件描述。 ### 定义组件参数 @@ -228,7 +216,7 @@ ss_compare_comp.int_attr( ) ``` -在这里,我们为 ss_compare 定义了一个参数 tolerance +在这里,我们为 ss_compare 定义了一个参数 tolerance ,为了一定程度上保护两位富翁的隐私,我们可以认为在一定范围的区别可以认为是相等的。 int_attr 代表了 tolerance 是一个integer参数。 @@ -244,7 +232,7 @@ ss_compare_comp.int_attr( - upper_bound:上限。这里是None,代表了没有上限。 组件还可以设置其他类型的参数,请参阅: -https://github.com/secretflow/secretflow/blob/main/secretflow/component/component.py#L132-L556 +https://github.com/secretflow/secretflow/blob/main/secretflow/component/component.py#L256-L719 ### 定义输入输出 @@ -286,8 +274,7 @@ ss_compare_comp.io( ) ``` -我们在这里定义了两个输出: alice_outputbob_output 和一个输入 -input_table +我们在这里定义了两个输出: alice_out put/bob_output 和一个输入 input_table 输入和输出的定义是类似的: @@ -298,7 +285,7 @@ input_table - INDIVIDUAL_TABLE:单方表。 - VERTICAL_TABLE:垂直切分表,联合表。 -可以看到nput参数还包含col_params,它是一个TableColParam 列表。每一个TableColParam表示用户需要在表中选择一些cols: +可以看到input参数还包含col_params,它是一个TableColParam 列表。每一个TableColParam表示用户需要在表中选择一些cols: - name:cols的名称。这里我们填写了alice_value, 意思是我们需要用户选择一些col作为alice_value列。 - desc:描述。 @@ -330,7 +317,7 @@ def ss_compare_eval_fn( from secretflow.device.device.pyu import PYU from secretflow.device.device.spu import SPU from secretflow.device.driver import wait - from secretflow.protos.component.data_pb2 import ( + from secretflow.spec.v1.data_pb2 import ( DistData, IndividualTable, TableSchema, @@ -338,8 +325,9 @@ def ss_compare_eval_fn( ) # only local fs is supported at this moment. - local_fs_wd = ctx.local_fs_wd - + data_dir = ctx.data_dir + #local_fs_wd = ctx.local_fs_wd + # get spu config from ctx if ctx.spu_configs is None or len(ctx.spu_configs) == 0: raise CompEvalError("spu config is not found.") @@ -425,7 +413,7 @@ def ss_compare_eval_fn( alice_ids, res.partitions[alice].data, ['result'], - os.path.join(local_fs_wd, alice_output), + os.path.join(data_dir, alice_output), ) ) @@ -444,7 +432,7 @@ def ss_compare_eval_fn( bob_ids, res.partitions[bob].data, ['result'], - os.path.join(local_fs_wd, bob_output), + os.path.join(data_dir, bob_output), ) ) @@ -462,7 +450,7 @@ def ss_compare_eval_fn( features=['result'], feature_types=['bool'], ), - num_lines=-1, + line_count=-1, ) alice_db.meta.Pack(alice_meta) @@ -480,7 +468,7 @@ def ss_compare_eval_fn( features=['result'], feature_types=['bool'], ), - num_lines=-1, + line_count=-1, ) bob_db.meta.Pack(bob_meta) @@ -488,10 +476,10 @@ def ss_compare_eval_fn( return {"alice_output": alice_db, "bob_output": bob_db} ``` -1.组件执行函数使用decorator @ss_compare_comp.eval_fn 修饰 +1.组件执行函数使用decorator @ss_compare_comp.eval_fn 修饰 -2.组件执行函数的signature必须为 fn(*,ctx,attr1, attr2, attr3, io1, io1_col1, io1_col2,..., io3,.., -ioN) : +2.组件执行函数的signature必须为 fn(*,ctx,attr1, attr2, attr3, io1, io1_col1, io1_col2,..., io3,.., +ioN) : 1.attr1, attr2, attr3指的是组件的attribute的值 @@ -540,7 +528,7 @@ ALL_COMPONENTS = [ ```shell $ cd docker/ -$ pip install requirements.txt +$ pip install -r requirements.txt $ env PYTHONPATH=$PYTHONPATH:$PWD/.. python update_meta.py Using region server backend. @@ -566,7 +554,7 @@ $ git diff translation.json ![Check_Translation](../imgs/check_translation.png) -请注意脚本目前是利用公开的翻译API进行处理的,如果有不合理的地方,请自行修改 translation.json +请注意脚本目前是利用公开的翻译API进行处理的,如果有不合理的地方,请自行修改 translation.json ## 打包镜像 @@ -592,7 +580,7 @@ docker image inspect secretflow/sf-dev-anolis8:test_compare # 注册隐语镜像 -在注册隐语镜像前,需保证已部署隐语SecretPad平台和调度框架Kuscia节点。具体部署教程,请参考[中心化组网模式部署Kuscia和平台](https://www.secretflow.org.cn/docs/kuscia/latest/zh-Hans/getting_started/quickstart_cn) +在注册隐语镜像前,需保证已部署隐语SecretPad平台和调度框架Kuscia节点。 ## 1.更新隐语SecretPad平台组件列表 @@ -600,7 +588,9 @@ docker image inspect secretflow/sf-dev-anolis8:test_compare ### 1.1. 获取工具脚本 + ```shell + # ${USER}: 表示部署secretpad时使用的用户名称,可以通过命令"docker ps"查看secretpad容器名称 docker cp ${USER}-kuscia-secretpad:/app/scripts/update-sf-components.sh . && chmod +x update-sf-components.sh ``` @@ -610,6 +600,10 @@ docker cp ${USER}-kuscia-secretpad:/app/scripts/update-sf-components.sh . && chm ```shell # -u: 指定 ${USER}。若不指定,则使用系统默认${USER},通过命令echo ${USER}查看 # -i: 指定自定义Secretflow组件镜像为 "secretflow/sf-dev-anolis8:test_compare" +# 中心化部署 +sed -i 's/SECRETPAD_CONTAINER_NAME="${DEPLOY_USER}-kuscia-secretpad"/SECRETPAD_CONTAINER_NAME="${DEPLOY_USER}-kuscia-master-secretpad"/g' update-sf-components.sh +./update-sf-components.sh -u ${USER} -i secretflow/sf-dev-anolis8:test_compare +# P2P部署 ./update-sf-components.sh -u ${USER} -i secretflow/sf-dev-anolis8:test_compare # 查看更多帮助信息 @@ -618,15 +612,13 @@ docker cp ${USER}-kuscia-secretpad:/app/scripts/update-sf-components.sh . && chm ## 2. 在Kuscia中注册自定义算法镜像 -有关将自定义Secretflow组件镜像注册到Kuscia ,请参考 -[注册自定义算法镜像](https://www.secretflow.org.cn/docs/kuscia/latest/zh-Hans/development/register_custom_image) +有关将自定义Secretflow组件镜像注册到Kuscia ,请参考[注册自定义算法镜像](https://www.secretflow.org.cn/docs/kuscia/latest/zh-Hans/development/register_custom_image) ⚠️**注意事项** -- 使用 -n secretflow-image 指定注册在Kuscia中的算法镜像AppImage名称为 - secretflow-image 。 -- 使用 -i docker.io/secretflow/sf-dev-anolis8: - test_compare 指定打包的自定义Secretflow组件镜像。由于默认打包的镜像Repo为docker.io,因此在导入镜像时需填写完成的镜像信息。 +- 使用 -n secretflow-image 指定注册在Kuscia中的算法镜像AppImage名称为 + secretflow-image 。 +- 使用 -i docker.io/secretflow/sf-dev-anolis8: test_compare 指定打包的自定义Secretflow组件镜像。由于默认打包的镜像Repo为 docker.io,因此在导入镜像时需填写完成的镜像信息。 ```shell # -u: 指定 ${USER} diff --git a/docs/all-in-one/version_update/202408.md b/docs/all-in-one/version_update/202408.md new file mode 100644 index 0000000..12b5271 --- /dev/null +++ b/docs/all-in-one/version_update/202408.md @@ -0,0 +1,11 @@ +# 2024年8月更新记录 + +**更新时间: 2024年08月30日** +**更新内容:** +**新功能:** + +1. 支持部署并管理多计算节点,支持用户隔离研发和生产环境 +2. 新增ODPS数据源,并支持模型发布到oss、odps数据源 +3. 支持在新增数据时,对空值进行自定义 +4. 隐私求交组件支持数据仅输出导某一方 +5. 行级过滤算子支持过滤空值行 \ No newline at end of file diff --git a/docs/all-in-one/version_update/index.rst b/docs/all-in-one/version_update/index.rst index 555fc9b..b86c48d 100644 --- a/docs/all-in-one/version_update/index.rst +++ b/docs/all-in-one/version_update/index.rst @@ -5,6 +5,7 @@ .. toctree:: :maxdepth: 2 + 202408 202406 202405 202404