Server - 调用 K8S 集群 GPU 环境运行算法脚本

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://blog.csdn.net/caroline_wendy/article/details/131899662

Kubeflow

Kubeflow 是基于 Kubernetes 的机器学习工具包,提供了一套技术栈,包含了很多组件,用于支持机器学习的各个阶段,如数据处理、模型训练、超参数调优、模型部署、流水线管理等。目标是构建一个统一的机器学习平台,覆盖最主要的机器学习流程(数据 - 特征 - 建模 - 服务 - 监控),同时兼顾机器学习的实验探索阶段和正式的生产环境。

1. 前置准备 Docker 镜像

上传已准备好的 Docker 镜像至 Docker 管理网站。

在网页中,登录 Docker 服务器,选择 新建项目 - [Your Name],进入个人页面,没有镜像则暂时为空。

在服务器中,登录 Docker 服务器:

docker login [server name]

如无法登录,则需要管理员配置,或使用可登录的服务器

设置 BOS 命令:

alias bos='bcecmd --conf-path bcecmd/bceconf/ bos'

加载已有的 Docker Image,设置标签 (Tag),以及上传 Docker,如:

# 加载已保存的 Docker Image
docker image load -i af2_v1_0_2.tar.gz
docker images | grep "af"# 提交 Tag
docker ps -l
docker commit [container id] af2:v1.01# 准备远程 Tag
docker tag af2:v1.02 [your server path]/af2:v1.02
docker images | grep "af"# 推送至远程
docker push [your server path]/af2:v1.02

再次进入Harbor 页面查看,发现已上传的 Docker Image 以及不同版本,即:

Harbor

2. POD 配置文件

配置文件,格式是yaml,如下:

apiVersion: batch/v1
kind: Job
metadata:name: af2-predict-[your time]  # 任务名称, 不能重复
spec:completions: 1  	# 总pod数量parallelism: 1  	# 并行运行的pod数量backoffLimit: 0		# 重试次数,这里失败后不需要重试template:metadata:annotations:sidecar.istio.io/inject: "false"labels:file-mount: "true"  	# 这两个label必须加,kubeflow帮你自动配置一些基本环境user-mount: "true"spec:nodeSelector:gpu.device: "a10"				# device是gpu类型,比如a10,a100containers:- name: spimage: [your server path]/af2:v1.02		# 已准备的 cuda 环境,提供一个基础conda和cuda环境imagePullPolicy: Alwaysresources:limits:cpu: 10memory: "40G"		# 所需内存,因为不同的模型预测对内存需求不同nvidia.com/gpu: 1command: ["/bin/sh", "-cl", "bash k8s_shells/shells/k8s_run.sh"]    # 添加运行命令workingDir: "af2/"		# 默认的工作目录,就是你启动脚本的所在目录env:			# 这是把每个pod的名字注入环境变量,以便能够在程序里区分当前是在哪一个pod中- name: PODNAMEvalueFrom:fieldRef:fieldPath: metadata.namerestartPolicy: Never

注意:completionsparallelism,是所需的 pod 数量,以及可并行的 pod 数量,数值一般相同。

当运行时,遇到名称重复,无法运行,则需要重新命名,或者删除之前的 Job。操作如下:

# 查看当前全部job
kubectl get job# 删除job
kubectl delete job [job name]

3. 运行脚本

基础的运行脚本如下:

  1. 激活 conda 环境,需要与docker环境对齐。
  2. 进入工作目录,执行运行脚本。
  3. 执行脚本:/bin/sh -cl "bash k8s_shells/shells/k8s_run.sh"

即:

#!/bin/bashsource deactivate
conda info --envs
conda deactivate# 与 Docker 中的环境对齐
conda activate /opt/conda/envs/alphafoldconda info --envsprintf "[Info] start run_alphafold.sh\n"cd /[your path]/af2/ || exit
bash run_alphafold.sh \
-f mydata/test-case/idr_test_fasta/ \
-o mydata/test-case/idr_test_outputs/printf "[Info] over run_alphafold.sh\n"

4. 调度 K8S

已编写 Template,调用 K8S 进行蛋白质结构预测,即:

kubectl apply -f k8s_template_idr_test1.yaml

查看日志:

kubectl get jobs  # 查看 job
kubectl delete job [pod name] # 删除 jobkubectl get pods  # 查看 pod
kubectl delete pod [pod name] # 删除 podkubectl logs [pod name]

已提交任务:

kubectl get pods 
NAME                                               READY   STATUS    RESTARTS   AGE
af2-predict-20230724-1-ftjtl                       0/1     Pending   0          2m9s

具体运行日志,已成功:

[CL] Amber relaxation param - use_gpu_relax: True
Using random seed 352410606854520785 for the data pipeline
[CL] The flag of use_saved_msa: True, run_only_msa: False, use_no_template: False.
Predicting T1157s1_A1008
[CL] Load saved extra 1 msas with 1 a3m and 0 sto.
[CL] merged.a3m msa size: 13535 sequences.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL SERVER安装

其中服务器名称输入./自己本机电脑名称. nchar类型一个单位可以放一个汉字-------长度短的补空格一个字节8位一个汉字两个字节 char类型两个单位可以放一个汉字 nvarchar类型是可变长度-----------长度短不会补空格 varchar类型是可变长度两个单位可以放一个汉字---------…

Istio Pilot源码学习(三):xDS的异步分发

本文基于Istio 1.18.0版本进行源码学习 5、xDS的异步分发 DiscoveryService主要包含下述逻辑: 启动GRPC Server并接收来自Envoy端的连接请求接收Envoy端的xDS请求,从ConfigController和ServiceController中获取配置和服务信息,生成响应消息…

文心一言 VS 讯飞星火 VS chatgpt (64)-- 算法导论6.5 3题

文心一言 VS 讯飞星火 VS chatgpt (64)-- 算法导论6.5 3题 三、要求用最小堆实现最小优先队列,请写出 HEAP-MINIMUM、HEAP-EXTRACT-MIN、HEAP DECREASE-KEY 和 MIN-HEAP-INSERT 的伪代码。 文心一言: 以下是使用最小堆实现最小…

国内攻克OLED屏幕修复术,成本暴降2/3不用拆机换屏

连着许多年各家手机发布会,屏幕基本是会花大精力宣传的三大件之一 也对,无论是外观还是实际的视觉、操作体验,屏幕都是非常重要的一环。 屏幕素质越来越高,用着也的确更爽了,但也越来越不敢摔了。 普普通通的一块 60…

SNMP协议是什么?

SNMP协议是什么? 简单网络管理协议(Simple Network Management Protocol,SNMP)是由互联网工程任务组定义的一套网络管理协议。该协议是基于简单网关监视协议(Simple Gateway Monitor Protocol,SGMP&#x…

ChatGPT助力校招----面试问题分享(十二)

1 ChatGPT每日一题:运算放大器与比较器的区别 问题:运算放大器与比较器的区别 ChatGPT:运算放大器和比较器都是电子电路中常用的模拟电路元件,但它们的设计和应用略有不同。下面是两者的主要区别: 功能不同&#xf…

服务器负载均衡算法有哪些

算法举例 服务器负载均衡算法是用于分配网络流量到多个服务器的策略,以实现负载均衡和提高系统性能。以下是一些常见的服务器负载均衡算法的详细说明: 轮询(Round Robin)算法: 轮询算法是最简单且常见的负载均衡算法之…

DevOps系列文章之 Git知识大全

常用命令 其他参数 --inital-branch 初始化的分支 --bare 创建一个裸仓库(纯 Git 目录,没有工作目录) --template 可以通过模板来创建预先建好的自定义 git 目录 常见 Git 配置 用户名配置 git config --global user.name "yourname&qu…

cmder 使用简介

文章目录 1. cmder 简介2. 下载地址3. 安装4. 配置环境变量5. 添加 cmder 到右键菜单6. 解决中文乱码问题 1. cmder 简介 cmder 是一个增强型命令行工具,不仅可以使用 windows 下的所有命令,更爽的是可以使用 linux的命令, shell 命令。 2. 下载地址 …

选择合适的图表,高效展现数据魅力

随着大数据时代的来临,数据的重要性愈发凸显,数据分析和可视化成为了决策和传递信息的重要手段。在数据可视化中,选择合适的图表是至关重要的一环,它能让数据更加生动、直观地呈现,为观众提供更有说服力的信息。本文将…

模型构建——使用逻辑回归构建模型,lightGBM进行特征筛选

1、模型构建流程 1.1 实验设计 新的模型要跟原有方案对比,而且是通过实验证明,特别注意模型和策略不能同时调整。一般实验设计包含以下流程: 问题:业务稳定后,可以去掉人工审核吗? 答:不可以…

c语言练手项目【编写天天酷跑游戏2.0】EASYX图形库的运用。代码开源,素材已打包

天天酷跑项目的开发 项目前言 项目是基于Windows,easyX图形库进行开发的, 开发环境:Visual Studio 2022 项目技术最低要求: 常量,变量,数组,循环,函数。 文章目录 天天酷跑项目的…

超详细-Vivado配置Sublime+Sublime实现Verilog语法实时检查

目录 一、前言 二、准备工作 三、Vivado配置Sublime 3.1 Vivado配置Sublime 3.2 环境变量添加 3.3 环境变量验证 3.4 Vivado设置 3.5 配置验证 3.6 解决Vivado配置失败问题 四、Sublime配置 4.1 Sublime安装Package Control 4.2 Sublime安装Verilog插件 4.3 安装语…

#pragma region用法

简介 #pragma region 是VS(Visio Studio)所特有的预处理语法(其他IDE或者Cmake会报错),其可以用来收缩或者展开一段代码。 #pragma region MyRegion// ...Code content #pragma endregion 其中,MyRegion 即给这代码块所定义的名…

【计算机网络】简易TCP网络小程序

文章目录 1. 简易TCP网络程序1.1 服务端1.1.1 服务端创建套接字1.1.2 服务端绑定1.1.3 服务端监听1.1.4 服务端获取连接1.1.5 服务端处理请求 1.2 客户端1.2.1 客户端创建套接字1.2.2 客户端连接服务器1.2.3 客户端发起请求 1.3 服务器测试1.4 单执行流服务器的弊端 2. 多进程版…

【Java】 服务器cpu过高如何排查和解决?

文章目录 前言一、常见能够引起CPU100%异常的情况都有哪些?二、服务器CPU使用率飙升异常,黄金4步排查法三、排查 CPU 故障的常用命令四、什么场景会造成 CPU 低而负载确很高呢?五、监控发现线上机器内存占用率居高不下,如何分析进…

webpack require.context

require.context((directory: String),(includeSubdirs: Boolean) /* 可选的,默认值是 true */,(filter: RegExp) /* 可选的,默认值是 /^\.\/.*$/,所有文件 */,(mode: String) /* 可选的, sync | eager | weak | lazy | lazy-onc…

RPA界面元素定位与操控技术详解-达观数据

RPA 入门介绍 什么是 RPA?RPA 是机器人流程自动化 Robotic Process Automation 的简写。在《智能RPA实战》中,我们这样定义:通过特定的、可模拟人类在计算机界面上进行操作的技术,按照规则自动执行相应的流程任务,代替…

Linux QT通过NFS挂载到Linux开发板上

Linux QT通过NFS挂载到Linux开发板上 说明:这里使用的Linux开发板是正点原子的阿尔法开发板 创建NFS 环境 NFS简介 网络文件系统,英文 Network File System(NFS),是由 SUN 公司研制的 UNIX 表示层协议 (presentation layer protocol)&…