Bryan Blog

个人分享 但愿各位看官喜欢

DICOM 图像探索

DICOM image exploration

背景介绍 最近开始推进医疗影像数据机器学习模型,医疗领域最常规的图像格式当属 DICOM 了,之前对医疗图像了解甚少,此次对 DICOM 图像进行了一些探索,整理相关内容在这边。 DICOM 图像探索 DICOM 格式介绍 DICOM 是一组通用标准协议,包括医疗图像的处理,存储,传输等各个方面的内容。协议具体内容可以查看 dicomstandard.org 而之前搜索调研医疗图像最常...

FATE Eggroll 源码解析

FATE Eggroll source code analysis

背景介绍 在之前的文章 中对 FATE 的调度系统 FATE-Flow 从源码角度进行了介绍,FATE 的可视化 FATE-Board 之前也介绍过了,对于 FATE 底层使用的数据传输机制 Eggroll 一直没有过多介绍。 而这一块的技术细节一直没有太多的资料可以参考,官方文档 上只有 Eggroll 部署相关的内容,网络上基本搜不到 FATE 底层数据传输 Eggroll 原理分析的...

联邦学习下线性回归算法实现概述

Overview of the implementation of linear regression algorithm under federated learning

背景介绍 最近在学习和实践机器学习相关内容,日常的工作主要是涉及联邦学习相关工程领域的开发,这次就从算法的角度来介绍一个联邦学习下的机器学习算法是怎样的。虽然是以线性回归算法为例,事实上其他的机器学习算法,比如逻辑回归,MLP 等也完全适用,进行少量的改造即可。 本文的开发主要基于 Pytorch 实现,主要以实践为主,不包含具体的公式推导。 线性回归算法实现 线性回归 是机器学习领域最...

FATE Board 执行流程探索

FATE Board Execution Process Exploration

背景介绍 FATE Board 是 FATE 提供的一个工程,用于给 FATE 提供可视化能力,方便在联邦学习训练中实时查看执行状态,更好地定位执行中遇到的问题。 查看 FATE 架构可以看到 FATE Board 是建立在 MySQL 和 FATE Flow Server 的基础上的,看起来数据来源是来自于这两者。FATE Flow Server 在之前的文章 中已经介绍过,FATE 中...

基于 Pre-commit 的代码风格统一实践

Unified Code Style Practice Based on Pre-commit

背景信息 统一代码风格首先需要定义参照的规范,每个团队可能会有自己的规范,我们选择的规范是 yapf + mypy + isort,如果保证所有的研发人员都遵循相关规范呢? 鼓励 IDE 中对应的插件的安装,通过直接对应的插件,在编写代码阶段就能实时发现不符合规范的情况,修改成本最低; 通过 Pre-commit 在创建 commit 时执行检查,并进行必要的自动格式化,提供统一...

基于 OpenAPI 的 Web 页面自动渲染实践

Practice of Automatic Rendering of Web Pages Based on OpenAPI

背景信息 最近接手的项目中遇到一个新的需求,需要对原有的机器学习相关的接口进行切换,因为机器学习算法训练包含的参数比较多,结构也比较复杂,参数之前存在复杂的动态依赖关系。更麻烦的问题在于前端 Web 页面是基于接口结构与字段类型进行渲染的,同时为了支持基于接口渲染出前端页面,前人使用的技术方案如下所示: 可以看到基于接口需要去管理后台进行参数的配置,管理后台为了前端逻辑的展示的需要,定...

FATE Flow 源码解析 - 日志输出机制

FATE Flow source code analysis - log mechanism

背景介绍 在 之前的文章 中介绍了 FATE 的作业处理流程,在实际的使用过程中,为了查找执行中的异常,需要借助运行生成的日志,但是 FATE-Flow 包含的流程比较复杂,对应的日志也很多,而且分散在不同的文件中,在这篇文章中就对 FATE-Flow 的日志机制进行梳理,帮助大家了解 Python 服务中实现一个更加灵活的日志机制 logging 机制 FATE-Flow 中日志主要基于...

FATE Flow 源码解析 - 资源分配流程

FATE Flow source code analysis - resource allocation process

背景介绍 在 上一篇文章 中介绍了 FATE 的作业处理流程,对于资源管理没有深入介绍,本篇文章就是来补充相关细节。 众所周知,FATE 是一个联邦学习框架,涉及了多个参与方(FATE 中叫站点)进行模型的训练,而各个参与方的训练过程都需要使用 CPU 资源和内存资源,因此在作业执行前需要提前先申请好必要的资源,才能避免在执行中避免因为资源不足而导致执行失败。 而 FATE 中单个作业会包...

FATE Flow 源码解析 - 作业提交处理流程

FATE Flow source code analysis - task submission process

背景介绍 FATE 是隐私计算中最有名的开源项目了,从 star 的数量上来看也可以看出来。截止 2023 年 3 月共收获 4.9k 个 star,但是 FATE 一直被认为代码框架复杂,难以理解,作为一个相关的从业者,后续会持续对 FATE 项目的源码进行解析,方便对隐私计算感兴趣的后来者提供一点点帮助。 本文主要基于 FATE-Flow 2022 年 12 月发布的版本 v1.10...

基于 Grpc interceptors 的请求跟踪探索

Exploration of request tracking based on grpc interceptors

背景信息 最终参与一个涉及比较大量 gRPC 服务调用的项目,内部调用链路比较复杂,追踪 bug 涉及的信息链路也很长,导致追踪问题比较困难。今天在跟踪特定问题时,发现部分链路日志缺失,而且执行链路比较难追踪,于是想到之前 Web 服务中为了方便异常追踪,会统一注册,将所有的请求与返回都打印出来,并通过唯一的 id 去串联完整处理链路,通过这种方式执行链路会变得特别清晰,调试问题也变得很方便...