Linux深度学习训练笔记

2023-11-16

首先要拥有Linux服务器一台(云服务器或者本地服务器均可)

Linux系统上需要安装好cuda与cudnn

查看cuda或者显卡信息:

nvidia-smi

安装好Anaconda

下一步,配置conda环境

conda create -n 环境名 python=3.x

下载依赖包

conda install xxx

注意这一步,类似于torch,paddlepaddle等依赖包,均需要下载gpu版本,具体可以到官网去复制下载命令,防止下载错误,有一种方式比较稳妥根据cuda版本,到Pytorch官网Start Locally | PyTorch,寻找对应cuda版本的Pytorch,可以直接从官网下载torch,torchaudio,torchvision三件套,然后把下载下来的whl文件通过后面的wget传给服务器,这样可以保证不会因为源的问题出现下载问题~

在linux上可以直接使用以下命令安装whl依赖包,不会出现下载问题~

pip install torch-1.13.0+cu116-cp37-cp37m-linux_x86_64.whl
pip install torchaudio-0.13.0+cu116-cp37-cp37m-linux_x86_64.whl
pip install torchvision-0.14.0+cu116-cp37-cp37m-linux_x86_64.whl

将训练代码以及需要安装的依赖包打包发送到服务器端

我采用的是7-zip压缩软件,将训练代码先压缩为.tar,再压缩成.gz的格式,放置到static下

其中app.py如下

from flask import Flask

app = Flask(__name__)

@app.route('/')
def tansfer():
    return "Transfer Files"


def main():
    """Run the app."""
    app.run(host="0.0.0.0", port=8000, debug=True)


if __name__ == '__main__':
    main()

传输文件,我采用的方式是从在运行的Flask服务上,下载文件:

wget ip/static/File.tar.gz

wget可以配合Flask服务使用,也可以直接从网页上下载文件

在linux下解压.tar.gz格式的文件,.tar.gz格式文件可以由7-zip进行tar压缩后再进行gzip压缩完成:

tar -zxvf File.tar.gz

ls即可查看到解压后的文件夹了,cd进入该文件夹,选择指定的训练文件train.py进行训练即可:

python train.py

后台挂起运行程序,不会因为关闭终端而停止进程

nohup python train.py &

查看输出日志的最后100行

tail -n 100 nohup.out

提前终止后台进程

查看该进程的pid

ps -aux

根据pid杀死该进程

kill -9 pid

批量删除保存的多余pth模型文件

ls | grep -P "u2net_bce_itr_[0-9]+_train_[0-1]?\.?[0-9]+_tar_[0-1]?\.?[0-9]+\.?pth" | xargs -d"\n" rm

ls获取所有文件名,通过管道符 | 传给grep进行正则化过滤,grep -P "正则表达式",传给xargs进行二次过滤换行符,最后rm删除

"u2net_bce_itr_[0-9]+_train_[0-1]?\.?[0-9]+_tar_[0-1]?\.?[0-9]+\.?pth"解析,u2net_bce_itr_任意长度的数字_train_0或1.任意长度的数字_tar_0或1.任意长度的数字.pth,综上就是匹配一个如下字符串:

"u2net_bce_itr_674000_train_0.175474_tar_0.012131.pth",就可以将这样的pth文件批量删除了,有别的格式的文件,只需要修改正则表达式即可。

查看端口

ps -aux

其中pid就是端口号,如果有端口占用可以根据pid杀死指定进程

kill -9 pid

进一步地,后台启动服务并生成日志

nohup python train.py --dataroot ./datasets/watermark2clean --name watermark2clean_cyclegan --model cycle_gan --gpu_ids 1,2,3 --batch_size 16 > train.log 2>&1 &

分解就是:nohup 启动服务命令 > 日志文件名 2>&1 &,注意,后面的2>&1 &是不变的

正序查看日志100行

cat -n 100 train.log

监控显存使用情况,每五秒刷新一次显存占用:

watch -n 5 nvidia-smi

将G_A.pth文件复制到/Transfer/static文件夹中:

cp /CycleGan/G_A.pth /Transfer/static

从服务器下载文件,也是在服务器上启动Flask服务进行本地下载:

curl -o "latest_net_G_A.pth" "http://10.19.9.72:8000/static/latest_net_G_A.pth"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux深度学习训练笔记 的相关文章

  • 如何使用 GCP 负载均衡器将 HTTP 重定向到 HTTPS

    我正在 GCP 中使用 2 个节点 Apache httpd 设置负载均衡器 域为 lblb tonegroup net 目前我的负载均衡器工作正常 流量正在两个节点之间切换 但我如何配置重定向http lblb tonegroup net
  • Bash:使用参数扩展查找和替换

    我想更换输入法 find string include 圆进度 38px 30px 4eb630 和输出 输出字符串 include 圆进度 38px 30px using find string pattern replacement s
  • 从哪个 Linux 内核/libc 版本开始,Java Runtime.exec() 在内存方面是安全的?

    在工作中 我们的目标平台之一是运行 Linux 的资源受限的迷你服务器 内核 2 6 13 基于旧 Fedora Core 的自定义发行版 该应用程序是用 Java Sun JDK 1 6 04 编写的 Linux OOM Killer 配
  • 如何使用终端打开“-”虚线文件名?

    我尝试了 gedit nano vi leafpad 和其他文本编辑器 它无法打开 我尝试了 cat 和其他文件查找命令 我向你保证这是一个文件而不是目录 这种方法有很多误解 因为使用 作为参数指的是标准输入 标准输出 i e 开发 标准输
  • IPC:在两个程序之间使用 C++ 中的命名管道

    我试图在同一台机器上运行的两个不同程序之间实现IPC 在我的例子中是CentOS7 为了实现一种松散耦合 我决定对 IPC 使用命名管道 因此 我正在使用以下示例并遇到了不同的问题 创建并写入管道 include
  • 如果等于特定值则替换列

    我希望替换 CSV 中的第四列 如果它等于 N A 我正在尝试将其更改为 1 我似乎无法让它发挥作用 awk F if 4 N A 4 1 test csv 您可以使用以下内容awk awk F 4 4 N A 1 4 1 OFS test
  • python os.path.exists() 对于存在的 nfs 挂载目录文件失败

    我基本上有一个用于网站的网络服务器和另一个仅存储文件的网络服务器 文件服务器通过安装其目录之一连接到主服务器 该网站运行 Django 所以我主要处理 python 不管怎样 我似乎遇到了一些问题 文件被报告为不存在 即使它们实际上存在 基
  • 在linux中将数据“广播”到多个进程的规范方法?

    我有一个应用程序需要将数据流从一个进程发送到多个读取器 每个读取器都需要查看自己的流副本 这是相当高的速率 100MB s 并不罕见 因此我希望尽可能避免重复 在我的理想世界中 Linux 应该有支持多个读取器的命名管道 并为常见的单读取器
  • 何时调用setsockopt?在bind()和connect()之前?

    我继承了一些 TCP 代码 调用 bind tcpSocket struct sockaddr server addr sizeof server addr 在致电之前 setsockopt tcpSocket SOL SOCKET SO
  • 将条目添加到 Linux 内核 .config 文件

    如何手动将 CONFIG XILINX FIXED DEVTREE ADDR y 行添加到 Linux 配置文件中 当我构建内核时它不断被覆盖 您可以通过以下方式构建make CONFIG XILINX FIXED DEVTREE ADDR
  • 如何使用c在Linux中获取当前时间戳(以纳秒为单位)

    我知道我们可以使用clock gettime CLOCK MONOTONIC 我尝试问的问题是 如果我需要以纳秒为单位的时间 从时代来看 这将是一个巨大的数字 例如 自纪元以来的秒数是13438461673 so 13438461673 1
  • 获取所有 JVM 使用的所有 Java 类的列表?

    我想要一个在某个时刻在多个线程 JVM 中加载的所有类的列表 我知道当你运行java时 verbose参数 您可以将其写入文件 如下所示 java verbose class com package Foo gt classes used
  • 如何在每个 xargs 命令之间休眠 1 秒?

    例如 如果我执行 ps aux awk print 1 xargs I echo 我想让 shell 在每次之间休眠 1 秒echo 如何更改我的 shell 命令 您可以使用以下语法 ps aux awk print 1 xargs I
  • Linux GCC 上 的 C++ 编译问题

    尝试过谷歌并在这里搜索 但没有运气 我正在尝试将一些使用 Windows 的代码移植到 Linux 上 然后我得到了大量的编译错误 我所做的只是 include
  • c - 后台运行的程序的退出状态

    我有一个任务 其中我必须创建一个迷你 shell 它能够执行很多操作 包括作业控制 我设法使用 fork 和 execvp 创建新的工作 但我还想获取 execvp 运行的程序的退出代码 根据我从其他帖子中查找到的内容 我可以使用以下方法来
  • 如何在多行而不是单行输出上打印 Linux 组名称

    我尝试过 getent group 命令 id Gn user 和一些 sed 组合 但我认为我无法实现 因此向其他程序员伸出援手 我希望能够打印此 groups abc123输出 abc123 devops 构建测试设计 预期输出 gro
  • ulimit -r 返回不同的值

    我将以下两行添加到系统范围的 etc security limits conf 中 soft rtprio 55 hard rtprio 55 系统重新启动后 根据我在计算机上访问用户帐户的方式 我会得到两个不同的结果 user clien
  • 如何安装 Node 和 NPM 以便不必使用 sudo?

    我正在尝试在 Ubuntu 14 04 计算机上设置 Node js 和 NPM 但遇到了一些问题 在我的第一次尝试中 我不断得到EACCES尝试安装软件包时出错 有时甚至使用sudo 所以我彻底卸载了node和npm 现在我正在尝试找出如
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也

随机推荐

  • 期望/方差/协方差/相关系数

    期望 在概率论和统计学中 数学期望 mean 或均值 亦简称期望 是试验中每次可能结果的概率乘以其结果的总和 是最基本的数学特征之一 它反映随机变量平均取值的大小 离散型随机变量的一切可能的取值Xi与对应的概率p xi 乘积之和称为该离散型
  • 会员ID查询测试用例设计

    检查点 默认值检查 异常输入 查询结果检查 正常输入 查询结果检查 测试用例设计 1 前提 存在会员ID abc abcd 1abc 会员id输入为字母abc 其它默认 点击 搜索 显示完全匹配该条件的数据 即只显示会员ID abc的记录
  • linux 线程

    1 线程概述 与进程的区别及线程的优势 什么是线程 在一个程序里的一个执行路线就叫做线程 thread 更准确的定义是 线程是 一个进程内部的控制序列 一切进程至少都有一个执行线程 线程是进程内部的一条执行序列或执行路径 即一个可调度的实体
  • 读书小记--<态度>

    前言 前段时间再读了吴军老师的 态度 分享的是和女儿的日常书信 觉得收获很多 同事推荐他的 浪潮之巅 数学之美 系列书籍 下面是个人的觉得认同或值得深入学习的一些点 特此记录一下 态度决定命运 文中写道撒切尔夫人的一句话 注意你的想法 因为
  • 前端调用高德地图的接口

  • 如何查看linux内核

    这本阿里P8撰写的算法笔记 再次推荐给大家 身边不少朋友学完这本书最后加入大厂 Github 疯传 史上最强悍 阿里大佬 LeetCode刷题手册 开放下载了 如何查看linux内核版本 第一种 登录linux 在终端输入 cat proc
  • 【机器学习】几种常见的概率分布

    之前你已经了解概率的基础知识 如果还不知道概率能干啥 在生活中有哪些应用的例子 可以看我这个 人工智能时代 用概率思维发现人生机会 www zhihu com 今天我们来聊聊几种特殊的概率分布 这个知识目前来看 还没有人令我满意的答案 因为
  • 常用的shell脚本

    1 脚本之间传递参数 1 sh 的脚本 接受参数 如下 如果有一个参数则赋值个sourceFile这个变量 否则用默认值 Shell代码 bin bash LANG en US UTF 8 get parameters sourceFile
  • 关于SSM 项目 tomcat无休止启动的问题记录

    起初很懵逼 然后一想就知道了 可能是刚写的sql除了问题 原sql SELECT FROM A WHERE DATEDIFF add time NOW lt 0 改后sql SELECT FROM tb order WHERE DATEDI
  • SpringCloud Gateway + Nacos 多模块下整合swagger2

    前言 我们经常在springboot单体项目中 集成swagger来整合接口文档 但是在微服务springcloud项目下 业务模块众多 如果再像之前一样单独访问每个模块的 swagger ui html 则非常麻烦 怎么解决呢 既然我们已
  • 本周新出计算机视觉开源代码汇总(语义分割、目标检测、超分辨率、网络结构设计、训练策略等)

    CV君汇总了过去一周计算机视觉领域新出的开源代码 涉及到图像增广 医学图像分割 图像恢复 目标检测 语义分割 超分辨率 显著目标检测 轻量级网络结构设计 网络规范化 标注工具等 其中有多篇来自CVPR 2019与ICML 2019的论文代码
  • COBOL

    一 COBOL简介 COBOL Common Business Oriented Language 面向过程的高级程序设计语言 二 COBOL语法格式 COBOL程序的每行代码通常分为80列 有非标准的80列可以超过80列 写多少列都可以
  • 【1】python爬虫入门,利用bs4以及requests获取静态网页

    注 本文仅适用于爬虫初级入门者 并不涉及太多技术本质 感谢您阅读此文 最近放假在家 闲时无聊 开始入门了python爬虫 可以完成一些基本的数据爬取 对于一些反爬取例如JS渲染 接口加密等页面仍然处于学习之中 本文就是简单总结最近已熟练掌握
  • PHP实现 美化 打赏点 金额 换算

    方法 function PointConversion je jenum strlen je echo substr je 0 1 万 if jenum 5 jv1 substr je 0 1 jv2 je 1 str jv2 0 jv1
  • mysql workbench使用存储过程

    MySQL 使用存储过程 先来了解一下什么是mysql的存储过程 Mysql存储过程是一个可编程的函数 它在数据库中创建并保存 它可以有SQL语句和一些特殊的控制结构组成 当希望在不同的应用程序或平台上执行相同的函数 或者封装特定功能时 存
  • 4.1.5-检查网页内容是否存在信息泄露

    检查网页内容是否存在信息泄露 ID WSTG INFO 05 总结 程序员在他们的源代码中包含详细的注释和元数据是很常见的 甚至建议这样做 但是 HTML 代码中包含的注释和元数据可能会泄露潜在攻击者不应获得的内部信息 应进行注释和元数据审
  • 颠覆行业

    2023年8月21日 一场盛大的签约仪式在拓世科技集团AI数字人全国营运中心隆重举行 拓世科技集团与湖南谋事科技有限责任公司 下称湖南谋事传奇 正式达成战略合作 共同开启数字人短视频项目合作与招商运营的新篇章 此次签约仪式 吸引了众多业界瞩
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • StyleGAN系列学习笔记

    StyleGAN可以无监督地分离高级属性 例如 姿态 身份 和生成图像中的随机变化 例如 雀斑 头发 控制图像不同层次的视觉特征 StyleGAN v1 Figure 1 传统生成器 vs Style based生成器 给定输入latent
  • Linux深度学习训练笔记

    首先要拥有Linux服务器一台 云服务器或者本地服务器均可 Linux系统上需要安装好cuda与cudnn 查看cuda或者显卡信息 nvidia smi 安装好Anaconda 下一步 配置conda环境 conda create n 环