Jax框架 —— 如何在没有GPU和TPU的设备上debug代码 —— 在CPU上使用GPU仿真设置 —— Jax框架在多卡设备上的自动并行特性的仿真体验
Jax计算框架是Google用来取代Tensorflow的新一代计算框架,这个框架使用类似pytorch的技术,但是在pytorch技术之上加入了更加强大的技术,但是这也导致该框架使用起来要比pytorch难一些,但是该框架的计算性能又比较优秀,因此依旧具有较大的吸引力。
Jax框架的性能优势主要体现在单机多卡GPU设备的自动并行上,Jax和TensorFlow同样有着编译器的优势,Jax可以通过简单的代码编写实现多卡并行的方式,在数据并行和模型并行的基础之上又实现了数据切割并行的方式,可以说Jax框架在原生水平上支持目前所有的并行操作,并且在并行的代码编写上又比pytorch更加简单,但是由于并行的复杂性,Jax的自动并行往往有着不好掌握的特点,虽然在编写上代码更加精炼,但是逻辑难度加大了,不容易掌握。
可以说,Jax对于pytorch来说最大的优点就是对于多卡设备,或者说是大规模计算的原生支持上,比如在Jax官方的讲解文档之中都是默认对8个TPU进行操作的,为实现同样的操作(代码可运行),我们也需要使用8个卡的GPU,这个要求虽然对于企业来说都是极为容易实现的,但是对于个人用户这个要求却是极为困难的。如果没有多卡的运行环境,我们也就无法体验Jax框架的特性。
为了方便体验和debug Jax框架的多卡自动计算的特性,Jax框架给出了多卡仿真的设置参数:
官方文档:
https://jax.readthedocs.io/en/latest/jax-101/06-parallelism.html

不过要注意的是,这个仿真设置的前提是本机没有GPU或TPU设备,然后才可以进行GPU和TPU的仿真设置,比如本地主机有两个GPU,那么是无法实现该仿真设置的:


可以看到,在本地存在GPU或TPU设备的时候,是无法实现仿真环境设置的。比如我这个环境下就有两个GPU,但是由于Jax的运行特性往往是在多卡(8卡以上的主机环境)下,因此我们要运行调试一个8卡的Jax环境我们就需要Jax的多卡仿真,使用CPU仿真出8个GPU和TPU,这时我们就需要把真实存在的GPU或TPU屏蔽掉(因为物理真实存在的GPU数太少,无法调试Jax的多卡大规模计算代码):
屏蔽已有的真实物理GPU或TPU:
export CUDA_VISIBLE_DEVICES=-1
屏蔽掉真实存在的两个物理GPU后,用CPU仿真出8个卡的运行环境:(注意,这里是使用CPU仿真8个卡的环境,只能作为调试之用,判断Jax的多卡运行的代码的正取与否,并不能获得真实8卡的计算性能,要注意,这里只是使用CPU仿真8个GPU):

给出 Jax 框架的CPU仿真多卡GPU的代码:
import os
os.environ['XLA_FLAGS'] = '--xla_force_host_platform_device_count=8'
jax.devices()
Jax框架 —— 如何在没有GPU和TPU的设备上debug代码 —— 在CPU上使用GPU仿真设置 —— Jax框架在多卡设备上的自动并行特性的仿真体验的更多相关文章
- CPU GPU FPU TPU 及厂商
1,AMD 既做CPU又做显卡2,Inter 全球最大的CPU厂商,GPU,FPGA3,NVIDA 人工智能起家的公司,且一直在做,显卡最出名,CUDA让N卡胜了AMD CPU上 AMD - Inte ...
- 学习笔记TF046:TensoFlow开发环境,Mac、Ubuntu/Linux、Windows,CPU版本、GPU版本
下载TensorFlow https://github.com/tensorflow/tensorflow/tree/v1.1.0 .Tags选择版本,下载解压. pip安装.pip,Python包管 ...
- (译)综合指南:通过Ubuntu 16.04上从Source构建来安装支持GPU的Caffe2
(译)综合指南:通过Ubuntu 16.04上从Source构建来安装支持GPU的Caffe2 译者注: 原文来自:https://tech.amikelive.com/node-706/compre ...
- mesos支持gpu代码分析以及capos支持gpu实现
这篇文章涉及mesos如何在原生的mesoscontainerizer和docker containerizer上支持gpu的,以及如果自己实现一个mesos之上的framework capos支持g ...
- tensorflow 使用CPU而不使用GPU的问题解决
今天发现一个怪现象,在训练keras时,发现不使用GPU进行计算,而是采用CPU进行计算,导致计算速度很慢. 用如下代码可检测tensorflow的能使用设备情况: from tensorflow.p ...
- 关于使用实验室服务器的GPU以及跑上TensorFlow代码
连接服务器 Windows - XShell XFtp SSH 通过SSH来连接实验室的服务器 使用SSH连接已经不陌生了 github和OS课设都经常使用 目前使用 192.168.7.169 使用 ...
- FIR特性及仿真实现_01
作者:桂. 时间:2018-02-05 19:01:21 链接:http://www.cnblogs.com/xingshansi/p/8419007.html 前言 本文主要记录FIR(finit ...
- Android sync adapter初体验之为什么官方文档上的代码不能work
回答:因为其实可以work sync adapter就是google推出的一个同步框架,把各种同步操作放在一起智能管理比较省电之类的.对我而言最具体的好处反正就是,不用自己写代码了,用框架就可以了.目 ...
- 在 Ubuntu16.04上安装anaconda+Spyder+TensorFlow(支持GPU)
TensorFlow 官方文档中文版 http://www.tensorfly.cn/tfdoc/get_started/introduction.html https://zhyack.github ...
- 《深度学习框架PyTorch:入门与实践》的Loss函数构建代码运行问题
在学习陈云的教程<深度学习框架PyTorch:入门与实践>的损失函数构建时代码如下: 可我运行如下代码: output = net(input) target = Variable(t.a ...
随机推荐
- 三维API sheder 基础
这个shader 是靠三维数学 影响 二维像素 导致像素颜色改变 它是每个像素走一遍脚本算法 写的时候注意 语言格式 写错了 shader脚本是不能用的,根本就不好使这个 可以用区域 用xyz y为0 ...
- centos7 添加极点五笔
打开终端,输入: yum install ibus ibus-table-wubi 遇到"Is this OK",输入y回车. 完成后重启电脑. 打开"应用程序" ...
- 夜莺监控(Nightingale)上线内置指标功能
Prometheus 生态里如果要查询数据,需要编写 promql,对于普通用户来说,门槛有点高.通常有两种解法,一个是通过 AI 的手段做翻译,你用大白话跟 AI 提出你的诉求,让 AI 帮你写 p ...
- 前台往后台传id
js页面var stuid;$(function () { var request = { QueryString : function(val) { var uri = window.locatio ...
- mongodb创建索引和删除索引和背景索引background
mongodb创建索引和删除索引和背景索引background MongoDB的背景索引允许在后台创建和重建索引,而不会对数据库的正常操作产生影响.背景索引的创建过程是非阻塞的,可以在业务运行时创建或 ...
- CNN -- Simple Residual Network
Smiling & Weeping ---- 我爱你,从这里一直到月亮,再绕回来 说明: 1.要解决的问题:梯度消失 2. 跳连接,H(x) = F(x)+x,张量维度必须一致,加完后再激活. ...
- YUM退役了?DNF本地源配置
客户遇到在OEL8安装Oracle缺包问题,使用dnf安装也没有,甚至连oracle-database-preinstall-21c都装不上.本质是DNF配置问题. 早期为了解决这类问题,专门写过很多 ...
- 最新扣子(Coze)实战案例:扣子卡片的制作及使用,完全免费教程
♂️ 大家好,我是斜杠君,手把手教你搭建扣子AI应用. ☘️ 本文是<AI应用开发系列教程之扣子(Coze)实战教程>,完全免费学习. 关注斜杠君,可获取完整版教程. 如果想学习AI应用 ...
- 在Docker中搭建rabbit MQ集群 (Mac + OrbStack)
我以为用docker搭建一个rabbitMq集群会非常简单,但是结果却出乎意料,我花了差不多两个半天才搞定.这还是依赖了AI的协助,否则难度不敢想象. 我的环境是Mac上的OrbStack.用了Kim ...
- fpga是什么
FPGA(Field Programmable Gate Array) 现场可编程门阵列