FATE如何进行本地代码调试
可以说是保姆级教程,基本每一步都写得非常详细,有问题评论区交流~
暴露端口
远程调试需要使用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源,安装ssh和vim
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如何进行本地代码调试相关推荐
- ZanProxy —— 本地代码调试线上页面,环境再也不是问题
一.ZanProxy 是什么 一言以蔽之,ZanProxy 是一个基于 Node.js 的代理服务器.它专注于帮助前端开发提高开发效率. 二.我们为什么需要一个代理工具 在前端开发中,我们常常会碰到以 ...
- 开源考试系统 - 本地代码调试运行
文章目录 一.后端部署 1. 图形化克隆项目 2. 命令克隆项目 3. 创建数据库,初始化数据库脚本 4. IntelliJ IDEA打开项目 5. 数据库连接和redis配置 6. 启动redis和 ...
- 前端连接后端本地代码调试
因为项目前后端分离,要与前端进行接口联调,后端本地启动项目,前端配置IP地址后可以直接访问后端启动的本地项目接口. 前提条件是两台电脑得处于同一局域网下. 此教程后端台式机,前端Mac笔记本. 1.后 ...
- VS中调试CS程序时提示:不支持互操作调试
场景 在VS中打开一个C#的程序进行调试时提示: 不支持互操作调试. 这是因为项目和VS的Framework版本高低不一致导致. 实现 VS中-右击项目-属性-调试-不要勾选启用本地代码调试
- phpcms移动端和pc端_移动端调试大法
文章:樊秀宝(北京中心-小易F8技术小组) 排版:suny 在日常项目中的开发中,接触移动端开发的小伙伴们免不了要和移动端调试打交道.本文总结了常用的移动端调试方法,欢迎大家学习和补充. 01 谷歌浏 ...
- 1.Weblogic通Eclipse调试配置(Weblogic同Eclipse调试配置技术)
概述:环境是eclipse,maven,svn, 在实际的的应用项目中,我们经常遇到本地应用程序没有问题,而部署到Weblogic上缺出现问题,查看日志并找不到原因,这时就需要调试部署上的程序与本地e ...
- 用vim写php,Vim/Neovim中配置PHP的代码调试
使用了一段时间的Neovim(Vim的一个变种)之后,发现再也离不开了,目前已经把Neovim作为主力开发工具了.刚也把PHP的调试功能给配置上了,这里记录一下在Neovim中配置PHP调试的整个过程 ...
- 【C# 调试】.net中的 .pdb文件是什么,有什么用
mscn:在 Visual Studio 调试器(C#)中指定符号 (.pdb) 和源文件 PDB全称Program Database,程序数据库 ( .pdb) 文件(也称为符号文件)将项目源代码中 ...
- 程序员的自我修养--链接、装载与库笔记:运行库
1. 入口函数和程序初始化 程序从main开始吗?:操作系统装载程序之后,首先运行的代码并不是main的第一行,而是某些别的代码,这些代码负责准备好main函数执行所需要的环境,并且负责调用main函 ...
最新文章
- html 甘特图_甘特图怎么画?甘特图基础教程,小白快速入门简单易懂
- 自学python需要安装什么软件-学Python需要安装什么软件?Python软件工具大全
- 鸿蒙开发-从搭建todolist待办事项来学习组件与js之间的交互
- css修改同步保存到文件,谷歌浏览器修改CSS和js后同步保存到文件中 (译)
- 分布式数据库拆分常用之法
- oracle hibernate 注解,Hibernate4实战之Hibernate4注解零配置
- Mysql--Auto_increment详解
- Python学习笔记第二十四周(JavaScript补充)
- JAVAWeb开发之Servlet-19.Filter
- CentOS7 (精简操作指令)
- Bridging the Gap Between Anchor-based and Anchor-free Detection 阅读
- mac软件全屏时候最顶上任务栏保留_一键整理 Mac 顶部菜单栏,这款免费工具 App 还你清爽...
- SpringBoot 雪花算法生成商品订单号【SpringBoot系列13】
- 二开版优化新紫色UI云开发新款壁纸小程序源码支持用户投稿在线审核
- Netbeans设置语言为英文
- 【数独个人项目】2. 拿到题目之后
- Android NFC读MifareClassic卡获取卡片ID 类型 扇区 存储空间
- uni-app 拍照或从相册上传图片
- short、int、long、long long
- Python办公自动化之Excel做表自动化:全网最全,看这一篇就够了!
热门文章
- 【JY】ETABS弹塑性时程分析的性能校核
- 高德地图(第三篇)定位
- 微处理器与微型计算机不同,微型计算机与微处理器.ppt
- RTX2060和GTX1080ti 哪个好
- Microsoft Visual C++ 14.0 is required 的解决方案记录
- R语言程序中的中文乱码解决办法
- 打破部门墙的6个高效沟通方法
- 苹果手机软件升级密码_密码太多总是忘?不如试试这7个密保工具
- ‘adb‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。(android studio)
- 计算机应用基础实践报告范文,计算机应用基础实习报告范文