可以说是保姆级教程,基本每一步都写得非常详细,有问题评论区交流~

暴露端口

远程调试需要使用ssh远程连接fate项目docker容器,所以要进行端口暴露,有两种情况:

1.还未安装fate

在安装脚本中修改docker run,提前设置暴露端口

前提:已经安装python3和pip,参考这篇文章:跳转

下载FATE源码

# 设置镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
yum install docker-ce-20.10.0 docker-ce-cli-20.10.0 containerd.io
# 开启docker服务
systemctl start docker
# docker开机自启
systemctl enable docker
# 安装docker-compose
pip install -U docker-compose
# 安装FATE,过程比较慢
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/docker_standalone_fate_1.5.1.tar.gz
tar -xzvf docker_standalone_fate_1.5.1.tar.gz

容器暴露端口(后续有用)

cd docker_standalone_fate_1.5.1
vim install_standalone_docker.sh

修改docker run的代码,替换为下面的代码

docker run -d --name fate -p 8080:8080 -p 10022:22 -p 9380:9380 fate:latest /bin/bash

运行

bash install_standalone_docker.sh

开启docker容器

docker start fate

访问:ip:8080 -> 可以看到页面

一般在运行容器时,我们都会通过参数 -p(使用大写的-P参数则会随机选择宿主机的一个端口进行映射)来指定宿主机和容器端口的映射,例如

docker run -it -d --name [container-name] -p 8088:80 [image-name]

这里是将容器内的80端口映射到宿主机的8088端口

参数说明

  • -d 表示后台运行容器
  • -t 为docker分配一个伪终端并绑定到容器的标准输入上
  • -i 是让容器的标准输入保持打开状态
  • -p 指定映射端口

在运行容器时指定映射端口运行后,如果想要添加新的端口映射,可以使用以下两种方式:

2.已安装fate

将现有的容器打包成镜像,然后在使用新的镜像运行容器时重新指定要映射的端口

大概过程如下:

先停止现有容器

这里的container-name指代的就是fate

docker stop container-name

将容器commit成为一个镜像

docker commit container-name  new-image-name

用新镜像运行容器

docker run -it -d --name new-container-name -p p1:p1 -p p2:p2 new-image-name

docker配置远程连接

进入docker容器

注意:如果上边暴露端口使执行的方法2,那么这里的fate要替换成new-container-name

docker exec -it fate /bin/bash

更新容器的apt源,安装sshvim

apt update
apt-get -y update
apt-get install --fix-missing openssh-server
apt-get install vim

使用vim打开并修改配置文件,找到PermitRootLogin prohibit-password这一行,删除前面的#,修改为PermitRootLogin yes

如果没有就在末尾添加内容:PermitRootLogin yes

vim /etc/ssh/sshd_config

允许通过ssh远程访问docker。

# 创建docker中root用户的密码。简单的123456即可
passwd root
# 启动ssh服务,至此,服务器端配置完毕。
service ssh restart

本地pycharm拉取代码

创建一个新项目,起一个项目名,比如FATE1.5

设置远端服务器

进入到配置界面,点击红框创建服务连接

服务连接如下,端口是10022,用户名密码就是上一步提到的在fate中设置的,可以点击下面test测试是不是能连同,测试成功之后返回

然后下面文件路径选择路径fate,选择ok

然后在Mappings中配置路径,第一个是刚刚创建的项目路径,第二个直接选择根目录

然后这个Tools中Download应该会亮,点击下载代码

Tools->Deployment下的Automatic Upload点击选中,代表本地修改或新建文件时自动上传到远端(ctrl+s保存文件改动)

点击Tools->Deployment->options,勾选红框那里,代表本地删除文件时,远端也自动删除

本地连接远程服务器环境

选择settings

project 设置环境,选择Add新添加

设置ip,port是10022,用户名root

填写密码

在1处选择路径:/usr/local/bin/pyhon3

在2处local path就是本地项目路径,远程路径就是/fate (忽略我这里的路径)

配置完成这里显示包名,即代表成功

本地开启服务端

先修改配置文件端口

本地修改项目下/conf/service_conf.yaml,这里改为9381,上一行的host修改为0.0.0.0;上传文件(可以配置保存自动上传)

然后去重启docker容器(重启fate),记住每次重启docker容器后要重启ssh:service ssh restart

然后上面再改回9380,上传文件

然后新打开一个pycharm,open选择项目路径下的python目录

打开文件/python/fate_flow/fate_flow_server.py

点击右键,运行这个文件,下面显示ip:9380即代表运行成功

运行训练任务

docker exec -it fate /bin/bash
cd python
python fate_flow/fate_flow_client.py -f upload -c /fate/examples/dsl/v1/upload_data_guest.json
python fate_flow/fate_flow_client.py -f upload -c /fate/examples/dsl/v1/upload_data_host.json
python fate_flow/fate_flow_client.py -f submit_job -c /fate/examples/dsl/v1/homo_logistic_regression/test_homolr_train_job_conf.json -d /fate/examples/dsl/v1/homo_logistic_regression/test_homolr_train_job_dsl.json

打印任务输出

先修改配置文件端口

本地修改项目下/conf/service_conf.yaml,这里改为9381,上传文件(可以配置保存自动上传)

然后去重启docker容器,记住每次重启docker容器要重启ssh:service ssh restart

然后上面再改回9380,上传文件

然后新打开一个pycharm,open选择项目路径下的python目录

在 /python/fate_flow/controller/task_controller.py中process_cmd下打印任务输出->为了查看task执行命令

添加代码:print(" ".join( i for i in process_cmd))

进入到server启动文件,点击右键运行

然后我们使用fate_flow_client.py创建训练任务

将训练任务参数填到这里,run运行fate_flow_client.py

参数就是上边训练任务的执行命令: -f submit_job -c /fate/examples/dsl/v1/homo_logistic_regression/test_homolr_train_job_conf.json -d /fate/examples/dsl/v1/homo_logistic_regression/test_homolr_train_job_dsl.json

在fate_flow_server.py的输出框中查看输出(如果没有输出多运行几次),

开始调试

根据上边打印的信息,我们使用:fate_flow/operation/task_executor.py调试组件,同样根据打印信息,把参数信息放到Parameters中;想调试什么组件看-n后面的参数即可

有一个注意点,因为我们单机版是三方训练,所以正常调试是要有交互的,所以我们不知要设置一个debug;比如这个intersection组件需要guest和host参与,我们要按照他两个的参数信息,创建两个debug任务,上边的打印信息可以看到

FATE如何进行本地代码调试相关推荐

  1. ZanProxy —— 本地代码调试线上页面,环境再也不是问题

    一.ZanProxy 是什么 一言以蔽之,ZanProxy 是一个基于 Node.js 的代理服务器.它专注于帮助前端开发提高开发效率. 二.我们为什么需要一个代理工具 在前端开发中,我们常常会碰到以 ...

  2. 开源考试系统 - 本地代码调试运行

    文章目录 一.后端部署 1. 图形化克隆项目 2. 命令克隆项目 3. 创建数据库,初始化数据库脚本 4. IntelliJ IDEA打开项目 5. 数据库连接和redis配置 6. 启动redis和 ...

  3. 前端连接后端本地代码调试

    因为项目前后端分离,要与前端进行接口联调,后端本地启动项目,前端配置IP地址后可以直接访问后端启动的本地项目接口. 前提条件是两台电脑得处于同一局域网下. 此教程后端台式机,前端Mac笔记本. 1.后 ...

  4. VS中调试CS程序时提示:不支持互操作调试

    场景 在VS中打开一个C#的程序进行调试时提示: 不支持互操作调试. 这是因为项目和VS的Framework版本高低不一致导致. 实现 VS中-右击项目-属性-调试-不要勾选启用本地代码调试

  5. phpcms移动端和pc端_移动端调试大法

    文章:樊秀宝(北京中心-小易F8技术小组) 排版:suny 在日常项目中的开发中,接触移动端开发的小伙伴们免不了要和移动端调试打交道.本文总结了常用的移动端调试方法,欢迎大家学习和补充. 01 谷歌浏 ...

  6. 1.Weblogic通Eclipse调试配置(Weblogic同Eclipse调试配置技术)

    概述:环境是eclipse,maven,svn, 在实际的的应用项目中,我们经常遇到本地应用程序没有问题,而部署到Weblogic上缺出现问题,查看日志并找不到原因,这时就需要调试部署上的程序与本地e ...

  7. 用vim写php,Vim/Neovim中配置PHP的代码调试

    使用了一段时间的Neovim(Vim的一个变种)之后,发现再也离不开了,目前已经把Neovim作为主力开发工具了.刚也把PHP的调试功能给配置上了,这里记录一下在Neovim中配置PHP调试的整个过程 ...

  8. 【C# 调试】.net中的 .pdb文件是什么,有什么用

    mscn:在 Visual Studio 调试器(C#)中指定符号 (.pdb) 和源文件 PDB全称Program Database,程序数据库 ( .pdb) 文件(也称为符号文件)将项目源代码中 ...

  9. 程序员的自我修养--链接、装载与库笔记:运行库

    1. 入口函数和程序初始化 程序从main开始吗?:操作系统装载程序之后,首先运行的代码并不是main的第一行,而是某些别的代码,这些代码负责准备好main函数执行所需要的环境,并且负责调用main函 ...

最新文章

  1. html 甘特图_甘特图怎么画?甘特图基础教程,小白快速入门简单易懂
  2. 自学python需要安装什么软件-学Python需要安装什么软件?Python软件工具大全
  3. 鸿蒙开发-从搭建todolist待办事项来学习组件与js之间的交互
  4. css修改同步保存到文件,谷歌浏览器修改CSS和js后同步保存到文件中 (译)
  5. 分布式数据库拆分常用之法
  6. oracle hibernate 注解,Hibernate4实战之Hibernate4注解零配置
  7. Mysql--Auto_increment详解
  8. Python学习笔记第二十四周(JavaScript补充)
  9. JAVAWeb开发之Servlet-19.Filter
  10. CentOS7 (精简操作指令)
  11. Bridging the Gap Between Anchor-based and Anchor-free Detection 阅读
  12. mac软件全屏时候最顶上任务栏保留_一键整理 Mac 顶部菜单栏,这款免费工具 App 还你清爽...
  13. SpringBoot 雪花算法生成商品订单号【SpringBoot系列13】
  14. 二开版优化新紫色UI云开发新款壁纸小程序源码支持用户投稿在线审核
  15. Netbeans设置语言为英文
  16. 【数独个人项目】2. 拿到题目之后
  17. Android NFC读MifareClassic卡获取卡片ID 类型 扇区 存储空间
  18. uni-app 拍照或从相册上传图片
  19. short、int、long、long long
  20. Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!

热门文章

  1. 【JY】ETABS弹塑性时程分析的性能校核
  2. 高德地图(第三篇)定位
  3. 微处理器与微型计算机不同,微型计算机与微处理器.ppt
  4. RTX2060和GTX1080ti 哪个好
  5. Microsoft Visual C++ 14.0 is required 的解决方案记录
  6. R语言程序中的中文乱码解决办法
  7. 打破部门墙的6个高效沟通方法
  8. 苹果手机软件升级密码_密码太多总是忘?不如试试这7个密保工具
  9. ‘adb‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。(android studio)
  10. 计算机应用基础实践报告范文,计算机应用基础实习报告范文