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

news2024/11/25 3:53:09

欢迎关注我的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,a100

      containers:
        - name: sp
          image: [your server path]/af2:v1.02		# 已准备的 cuda 环境,提供一个基础conda和cuda环境
          imagePullPolicy: Always
          resources:
            limits:
                cpu: 10
                memory: "40G"		# 所需内存,因为不同的模型预测对内存需求不同
                nvidia.com/gpu: 1
          command: ["/bin/sh", "-cl", "bash k8s_shells/shells/k8s_run.sh"]    # 添加运行命令
          workingDir: "af2/"		# 默认的工作目录,就是你启动脚本的所在目录
          env:			# 这是把每个pod的名字注入环境变量,以便能够在程序里区分当前是在哪一个pod中
            - name: PODNAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
      restartPolicy: 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/bash

source deactivate
conda info --envs
conda deactivate

# 与 Docker 中的环境对齐
conda activate /opt/conda/envs/alphafold

conda info --envs

printf "[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] # 删除 job

kubectl get pods  # 查看 pod
kubectl delete pod [pod name] # 删除 pod

kubectl 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.coloradmin.cn/o/785367.html

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

相关文章

魔功心法-枚举篇

什么是枚举 枚:量词。一般用于较小的片状物,相当于“个”。 举:提出:列举。举一反三。举个例子。 所以,枚举就是一个个列举出来 枚举的作用 魔功的作用,就不过多描述了,主打的就是一个优雅。…

将AWS S3大文件文件上传相关的API集成为js文件,功能包括 多文件并行上传、文件分片上传、断点续传、文件分片合成、上传暂停、取消上传、文件上传进度条显示

地址 https://github.com/gk-1213/easy-s3/tree/main easy-s3 将AWS S3大文件文件上传相关的API集成为js文件,功能包括多文件并行上传、文件分片上传、断点续传、文件分片合成、上传暂停、取消上传、文件上传进度条显示。 暂时不包括文件分片下载相关功能&#…

网工实操基础学习23.07.05

1.交换机,路由器 交换机的作用是链接同一个网络下的所有设备,如果有无线设备加入,需要添加AP(无线接入点)设备在交换机层次上 路由器的作用是将不同网络下的设备链接 2.IP地址 划分网段:网络位、网段、…

C++第三方开发库matplotlib-cpp

Matplotlib-cpp是一个用于在C中绘制图表的开源库。它提供了与Python的Matplotlib库类似的功能,使得在C环境下进行数据可视化变得更加便捷。基于Matplotlib-cpp,我们可以使用各种绘图函数和样式选项来创建各种类型的图表,包括折线图、散点图、…

单片机第一季:零基础11——实时时钟DS1302

目录 1,DS1302 时钟芯片介绍 2,BCD码介绍 3,涉及到的寄存器 3.1,控制寄存器 3.2,日历/时钟寄存器 3.3,DS1302 的读写时序 4,相关代码 这一章我们来学习DS1302 时钟芯片&#xff0c…

数据结构栈和队列

3.栈和队列 3.1栈和队列的定义和特点 栈和队列是两种常用的、重要的数据结构栈和队列是限定插入和删除只能在表的 “ 端点 ”进行的线性表栈和队列是线性表的子集(是插入和删除位置受限的线性表) 栈的应用: ​ 由于栈的操作具有后进先出的…

国内疫情地图和省级疫情地图

基础地图演示 from pyecharts.charts import Mapfrom pyecharts.options import VisualMapOpts map Map() data [ ("北京", 99), ("上海", 199), ("湖南", 299), ("台湾", 199), ("安徽", 299), ("广州", 399…

干货满满-运营校园跑腿小程序

校园跑腿是指在校园内提供代办、送餐、购物等服务的一种形式。学生可以通过跑腿服务解决一些日常生活中的繁琐事务,节省时间和精力。在校园跑腿小程序运营中,你可以尝试以下方法进行运营管理: (1)注册或加入相关的校园…

fdbus和proto编译

1. 下载protobuf和FDBUS 1.下载 FDBUS需要用到protobuf,所以需要提前安装好protobuf。 protobuf下载地址 https://gitee.com/it-monkey/protocolbuffers/ fdbus下载地址 https://gitee.com/jeremyczhen/fdbus 2. Windows编译 生成vs工程 打开CMake&#xff…

(vue)vue项目中引入外部字体

(vue)vue项目中引入外部字体 效果: 第一步 放置字体包,在assets下创建一个fonts文件夹,放入下载的字体文件 第二步 创建一个font.css文件用于定义这个字体包的名字 第三步 在App.vue的css中将这个css文件引入 第四步 页面使用 font-famil…

NumPy 专业人士应该掌握的 45 个技能

一、说明 NumPy(或Numeric Python)是每个数据科学和机器学习项目的核心。 整个数据驱动的生态系统在某种程度上依赖于NumPy及其核心功能。这使它成为 Python 有史以来最重要和改变游戏规则的库之一。 鉴于NumPy由于其无与伦比的潜力而在工业界和学术界具…

java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法

文章目录 一、记录文件相关操作方法二、代码1.读取路径返回List\<File>2.读取路径返回List\<String>3.删除文件夹4.删除文件 一、记录文件相关操作方法 二、代码 1.读取路径返回List<File> import org.slf4j.LoggerFactory; import org.slf4j.Logger;impo…

【学会动态规划】按摩师(11)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

es通过rest接口_search、_delete_by_query查询与删除数据

1、rest接口查询数据 rest查询: http://localhost:9200/index_name/_search 查询表达式&#xff1a; {"query": {"wildcard": {"accountID": {"value": "v*"}}} }postman请求截图&#xff1a; 2、使用Rest接口删除数据 …

基于Lucene实现校园搜索引擎——太强搜索

完整资料进入【数字空间】查看——搜索"writebug" 实验环境 win10 一、实验内容 综合运用搜索引擎体系结构和核心算法方面的知识&#xff0c;基于开源资源搭建搜索引擎&#xff0c;具体包括如下几点&#xff1a; 抓取清华校园网内绝大部分资源&#xff0c;并且进行…

【NLP】温和解读:transformer的核心思想

变压器模型及其关键组件的概述。 一、介绍 在这篇博文中&#xff0c;我将讨论本世纪最具革命性的论文“注意力是你所需要的一切”&#xff08;Vaswani et al.&#xff09;。首先&#xff0c;我将介绍自我注意机制&#xff0c;然后介绍变形金刚的架构细节。在之前的博客文章《从…

【数据分析 最火 全集干货】Anaconda的安装及使用

关于我的专栏&#xff1a; 接下来会有许多关于“数据分析”的文章哦&#xff0c;记得看哦&#xff01;&#xff01;&#xff01; Python最详细最全面基础合集_adaptation_T_C的博客-CSDN博客 有兴趣&#xff0c;需要 的小伙伴可以免费订阅哦&#xff01;&#xff01;&#x…

阿里 P8 架构师 20 年经验!总结成微服务设计企业架构转型之道

前言 本文涉及两个方面的知识体系&#xff0c;即企业架构知识体系和软件架构知识体系。 企业架构和软件架构虽然都与 IT 相关&#xff0c;但其知识体系是完全不同的两个领域。一般而言&#xff0c;搞企业架构的人士不明白软件架构的细节和实现&#xff0c;而从事软件架构的架…

如何恢复损坏/删除的 Word 文件

有关如何修复不可读的 Microsoft Word 文件或 Rich Text 文件中的文本的分步说明。这些说明有助于从损坏的*.doc、*.docx、*.dot、*.dotx、*.rtf文件&#xff08;任何版本和大小&#xff09;中提取文本&#xff0c;只需单击几下&#xff1a; 从此处下载奇客数据恢复 &#xff…

React AntDesign写一个导出数据的提示语 上面有跳转的路径,或者点击知道了,关闭该弹层

效果如下&#xff1a; 代码如下&#xff1a; ForwardDataCenterModal(_blank);export const ForwardDataCenterModal (target?: string) > {let contentBefore React.createElement(span, null, 数据正在处理中&#xff0c;请稍后前往);let contentAfter React.creat…