运行GPU 任务——以 DeepVariant 为例
DeepVariant 是一块基于深度学习计算框架(Tensorflow)的变异检测工具。通过对比对结果文件的累积图张量(pileup image tensors),采用卷积神经网络(convolutional neural network, CNN )进行分类,最终生成样本的变异检测结果文件(vcf 文件或 gvcf 文件)。
对于生信用户而言,使用DeepVariant 最大的障碍在于其使用GPU 进行加速计算时,对系统配置相对复杂。Achelous 平台针对GPU 使用上的配置问题,提供了WDL runtime属性接口,可以最大限度的简化用户的配置工作。
DeepVariant 任务的WDL 脚本编写
Achelous 平台可以实现在WDL 语言中定义任务所需要的GPU 使用资源,通过runtime
中的属性来实现:
gpu
指明需要分配的GPU的设备数,可以是GPU卡、GPU实例(MIG模式GPU卡)或者GPU计算实例(MIG模式的GPU卡)gpumemory
指定需要的GPU显卡内存,多个使用显存的任务可能会共用同一个GPU卡。 其中gpu
和gpumemory
不能同时使用,如果同时指定只有gpumemory
会生效。
task deepvariant_task {
File reference
File inputBamFile
command {
export TF_FORCE_GPU_ALLOW_GROWTH=true
/opt/deepvariant/bin/run_deepvariant \
--model_type=WGS \
--ref=${reference} \
--reads=${inputBamFile} \
--output_vcf=output_vcf.gz \
--num_shards=25
}
output {
File output_vcf = "output_vcf.gz"
}
runtime {
docker:"deepvariant:google-0.10.0-gpu"
cpu:"5"
gpu:"1"
memory:"20G"
}
}
workflow deepvariant {
File reference
File inputBamFile
call deepvariant_task{
input:
reference = reference,
inputBamFile = inputBamFile
}
}
DeepVariant 镜像准备
DeepVariant 的官方镜像中已经对需要使用的相关库文件(如 libcuda.so
)进行了配置,因此用户可以直接通过DeepVariant 官方镜像资源,进行镜像获取和运行。
注意 对于其他基于GPU 计算的程序,用户需要在镜像制作时,提前安装相应的库。以保证程序的正常运行。