0%
4k 字 16 分钟

背景

Docker 部署有着非常多的优势,可以帮助提高开发、测试和部署的效率,降低成本,使应用更具可移植性和可扩展性,包括但不限于

  1. 标准化应用发布,跨平台和主机使用:Docker的镜像提供了标准化发布环境,使得应用可以在不同的平台和主机上运行,提高了可移植性。
  2. 节约时间,方便快速部署和启动:使用Docker可以快速构建、部署和启动应用,特别是在开发环境中,可以快速地构建和测试应用。
  3. 方便构建基于SOA架构或微服务架构的系统:Docker可以方便地构建和部署基于SOA架构或微服务架构的系统,使得不同的服务可以独立地开发和部署。
  4. 节约成本:通过Docker的镜像和容器化技术,可以有效地降低应用运行所需的硬件资源,从而节约成本。
  5. 方便持续集成:Docker可以方便地集成到持续集成流程中,使得代码的构建、测试和部署更加自动化。
  6. 可以作为集群系统的轻量主机或节点:Docker可以作为集群系统的轻量主机或节点,提供高效的资源管理和调度。
  7. 简化配置:Docker将运行的环境打包至容器,使用时直接启动即可,大大简化了配置过程。
  8. 快速迁移扩展:我们可以快速将容器进行打包迁移到需要的平台上应用,拥有良好的兼容性。
    而且,这么多年下来,各类应用,都已经docker化了。大大方便了我们日常的使用,以下就列举了在日常使用和开发中常用的一些docker

前置

安装好docker engine 和 docker-compose。

Read more »
351 字 1 分钟

前言

我们的Azure SQL Server是在2018年建的,当时还不支持汉字的字符集。然后最近发现因为字符集的缘故,出了bug,要调整字符集。然后就照着sqlserver 排序规则(字符集)查看与修改 一通修改。
然后神奇的事情来了,Sql Server 刚建好的时候,可以改DB的字符集。但是已经存在的DB,无法调整。

经过

试了几次,无奈之下只能找了MicroSoft Support。经过再三确认,为了防止误操作,这个功能在local版本的SQL Server 是有的,但是Azure版本关了,能改成功是因为刚创建Server 的几秒钟之内,权限配置啥的还没完全生效。 What the fxxk!!! 问题没解决,还帮微软找了一个bug。
然后再三确认,Azure SQL Server 一但建好,就没法改字符集,要改动这个,只能删库+跑路。 啊不对, 是删库之后重新建表导入数据。

尾声

Read more »
1.4k 字 5 分钟

概述

上一篇搭建开发环境-WSL+Ubuntu 记录了WSL 和Ubuntu 下开发环境的搭建。这一篇就说下Mac开发环境的搭建。
就像很多人误以为Mini 是专为女孩子设计的高颜值车,其实是一辆极其hardcore 的拉力车一样。
很多人都被Mac 那高颜值蒙蔽了,其实这是一台生产力满满的生产工具。
生产力镇楼

那既然作为生产工具,我们自然也要好好的配置一下了。

Setep

1. 安装常用软件

Read more »
2.1k 字 10 分钟

概述

所谓工欲善其事必先利其器,搭环境往往是开发过程中卡出很多初学者的拦路虎。
对于很多老鸟来说,很多东西都已经习惯成自然,也就没有刻意和初学者说。但对于很多初学者,却是受益良多。
这个系列,先从操作系统开始,记录一些在开发中常用的工具和小技巧

操作系统

.NET 和 iOS 开发请绕路,这里主要针对的Linux。目前很多开发都需要一台Linux环境来进行编译,调试等等。然而公司发给大家的一般都是win的电脑。
考虑到各种安全策略的限制,还没发直接安装Linux系统,若干年前,只能通过Virtualbox等软件来安装虚拟机,来曲线救国。
后来有了Microsoft 的Hyper-V 等技术,方便了虚拟机的安装,但终究是要在不同的系统之间来回切换的,还是不是很方便。那么有什么方法可以在windows 下操作linux呢?
当然有了,不得不提当前Linux最优秀的发行版本,Windows 的 Subsystem Linux(WSL)!!!

曾几何时,WSL 还只能支持命令行操作,在WSL中使用GUI 应用,还需要另外配置RDP。现在,已经进化到自带RDP协议Run Linux GUI apps on the Windows Subsystem for Linux,只需要一个命令,就可以在WSL中使用IDEA敲代码, 然你感受丝般顺滑(真的,不信的去试下在WSL打开IDEA和Win 下打开IDEA的速度)。
支持各类Shell 命令(再也不用在Git Bash 里敲命令了,太爽了)。

Read more »
1.7k 字 10 分钟

综述

存储fate 训练过程中的模型
目录: /data/projects/fate/model_local_cache/{model_version}/{model_id}

内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(app-root) bash-4.2# ls -R
.:
define pipeline.pb variables

./define:
define_meta.yaml proto

./define/proto:
boosting-tree-model-meta.proto data-io-param.proto feature-selection-meta.proto hetero-kmeans-param.proto lr-model-meta.proto onehot-param.proto poisson-model-meta.proto sir-param.proto
boosting-tree-model-param.proto feature-binning-meta.proto feature-selection-param.proto hetero-nn-model-meta.proto lr-model-param.proto one-vs-rest-param.proto poisson-model-param.proto statistic-meta.proto
column-expand-meta.proto feature-binning-param.proto ftl-model-meta.proto hetero-nn-model-param.proto nn-model-meta.proto pearson-model-meta.proto psi-model-meta.proto statistic-param.proto
column-expand-param.proto feature-scale-meta.proto ftl-model-param.proto linr-model-meta.proto nn-model-param.proto pearson-model-param.proto psi-model-param.proto
data-io-meta.proto feature-scale-param.proto hetero-kmeans-meta.proto linr-model-param.proto onehot-meta.proto pipeline.proto sir-meta.proto

./variables:
data index

./variables/data:
pipeline

./variables/data/pipeline:
pipeline

./variables/data/pipeline/pipeline:
Pipeline

./variables/index:

其中重要的内容为
define_meta.yaml 模型的元数据定义
如upload 为

Read more »
277 字 1 分钟

综述

upload,intersection,lr 等等组件,如果有中间结果,都以lmdb的形式存储。
有关lmdb的,请参考官方文档
存储位置为:nodemanager 的 /data/projects/fate/eggroll/data/LMDB
按照outputdata{task_id} 存储各个task的结果 如:

  • output_data_20210908144140944232712_dataio_0_0
  • output_data_20210908144140944232712_hetero_lr_0_0
  • output_data_20210908144140944232712_intersection_0_0

因为以kubefate的方式部署,是分布式的。在当前情况下存在nodemanager,nodemanager-0,nodemanager-1,nodemanager-2 四个节点。分别在四个节点下查看output_data_20210908144140944232712_dataio_0_0,结果如下

  • nodemanager:data/LMDB/output_data_20210908144140944232712_dataio_0_0/52adf118107011ec90ee9ead31313d02/3/data.mdb
  • nodemanager-0:data/LMDB/output_data_20210908144140944232712_dataio_0_0/52adf118107011ec90ee9ead31313d02/0/data.mdb
  • nodemanager-1:data/LMDB/output_data_20210908144140944232712_dataio_0_0/52adf118107011ec90ee9ead31313d02/1/data.mdb
  • nodemanager-2:data/LMDB/output_data_20210908144140944232712_dataio_0_0/52adf118107011ec90ee9ead31313d02/2/data.mdb
Read more »
412 字 1 分钟

综述

fate_flow_server 启动时,会初始化db。cluster模式为mysql,standalone模式为sqlite,详细说明参考FATE学习:跟着日志读源码(二)fate_flow server 启动
而在fate 任务的运行过程中,产生的job和task的metadata 以及 tracker 信息。这部分数据都存储在db中。因而也涉及大量的DB操作。
创建 job or task: intsert 语句
更新 job or task信息: update 语句、delete语句

db概览

有5个库

1
2
3
4
5
6
7
8
9
10
11
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| eggroll_meta |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.19 sec)
Read more »
1.1k 字 5 分钟

综述

在创建job 、task 和 执行task的过程中,将相关配置信息、pid信息等落盘。
目录位于 /data/projects/fate/jobs/${jobid} 下
主要包括3类:

  • pid:用于记录执行各个task的进程号的文件。
  • 配置文件:针对输入的DSL 文件,和Run Time Conf文件,结合当前FATE部署时的配置参数,会生成任务运行时最终使用的配置文件。
  • 日志

    目录结构

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    |-- job_dsl.json: 结合输入的DSL 文件 和 默认配置参数生成。
    |-- job_runtime_conf.json:结合输入的 Run Time Conf 和默认配置参数生成。
    |-- pipeline_dsl.json:在启用pipeline 的情况下,会有值,否则为空。
    |-- train_runtime_conf.json:在predict 时会有值,即已经训练好的模型,否则为空。
    |-- ${role}
    | |-- job_runtime_on_party_conf.json:当前paryty 上的配置文件。
    | |-- ${party}
    | |-- ${conpoment}
    | |-- ${session_stop}
    | |-- pid:记录结束task的进程的进程号
    | |-- std.log:相关日志
    | |-- ${taskid}
    | |-- ${partty}
    | |-- pid: 记录执行当前task的进程的进程号
    | |-- task_parameters.json:记录当前task 的参数。

upload 任务为例

job_dsl.json

Read more »
282 字 1 分钟

作为刚接触FATE的新人,尤其是工程向的,肯定很好奇FATE运行过程中,产生的日志都记录在哪里?运行过程中的模型和中间数据都保存在哪里?
总的来看,FATE运行时产生数据包括如下几部分: