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,一经查实,立即删除!

相关文章

使用RestTemplate访问内部服务时返回的json字符串未做转换处理之后再次返回json字符到前台导致json字符串无法解析的解决办法

1. 以下是使用RestTemplate调用接口的方法 RequestMapping("/getQrList") //获取qrlable列表String getQrList(Qr qr) {//返回的数据本身就是 ResponBody也就是json,当前方法再次返回json,就会导致导出时无法解析数据(table是能…

SQL SERVER安装

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

GStreamer Basic tutorial 学习笔记(十三)

1 播放速度 GStreamer提供了两种改变播放速度的机制:步进事件(Step Events)和搜索事件(Seek Events)。步进事件允许跳过一定量的媒体,并改变随后的播放速度(只能为正值)。搜索事件还…

“深入解析Spring Boot:从入门到实战“

标题:深入解析Spring Boot:从入门到实战 摘要:本篇博客将深入解析Spring Boot,从入门到实战,帮助读者了解Spring Boot的核心概念、特性和使用方法,并通过示例代码演示如何使用Spring Boot开发一个简单的We…

Python3 unittest学习

Python3 unittest学习 unittest单元测试框架基本结构执行测试普通方式执行通过unittest模块执行 跳过测试与预期失败使用子测试区分测试迭代类与函数class unittest.TestCase(methodNamerunTest)用于运行测试的方法断言方法其他方法和属性 class unittest.IsolatedAsyncioTestC…

JVM五大内存模型

什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一个虚构出来的计算机,有着自己完善的硬件架构,如处理器、堆栈等。 JVM的作用 Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Jav…

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…

TC3XX - MCAL知识点(十一):WDG EB-tresos配置说明与代码浅析

目录 1、概述 1.1、简介 1.2、Safety Watchdog 1.3、CPU Watchdogs 1.4、看门狗定时器的功能列表

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

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

2.python设计模式【面向对象设计的SOLID原则 基础概念】

1.可放封闭原则 概念:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。即软件实体应该尽量在不修改原有代码的情况下进行扩展 2.里式替换原则 概念:所有引用父类的地方必须能透明地使用其子类的对象 3.依赖倒置原则 概念&#…

qs.stringify() 和 JSON.stringfy 的区别

qs 是 nodejs 的一个模块。qs.stringify()常用于对象转url参数;qs.parse()常用户url参数转对象; JSON.stringfy是js自带的方法。 JSON.stringify()用于对象转字符串;JSON.parse()用于字符串转对象; 两者都能进行序列化&#xff0c…

若依日志打印入参,返回参数,日志切面打印接口调用,出现一个接口多次调用的情况且,多次调用返回值为null,initBinder的原因。

使用若依Springboot项目,Controller均继承BaseController。 这里若依原日志切面不会打印接口请求参数,返回参数等信息,这里我做了修改。 修改后日志打印出现一个接口调用4次,5次的情况 15:08:58.342 [http-nio-8082-exec-4] INF…

DevOps系列文章之 Git知识大全

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

Oracle压缩数据

Oracle压缩数据的处理基于数据库块,其本质上是通过消除在数据库块中的重复数据来实现空间节约,具体方法如下:比较数据块中包含的所有字段或记录,其中重复的数据只在位于数据块开始部分的记号表(Symbol Table&#xff0…