大数跨境
0
0

PyTorch高效开发工具

PyTorch高效开发工具 麦科技AI
2025-12-03
4
导读:高效开发工具为了更好地探索深度学习,享受coding的乐趣,高效的工具可以起到事半功倍的效果。

高效开发工具

为了更好地探索深度学习,享受coding的乐趣,高效的工具可以起到事半功倍的效果。

1.版本管理:Git

Git是一个开源的分布式版本控制系统,用于高效敏捷开发工程项目。Git目前支持Linux、Mac OS、Windows等系统,在此我们以Ubuntu系统为例。

利用如下指令即可进行Git的安装。

sudo apt install git

安装完后,为了使用便捷,可以利用git config指令来配置自己的邮箱与密码信息,具体如下:

git config --global user.name "your name"git config --global user.email "youremail@youremail.com"

使用git init指令可以初始化一个Git仓库,执行后会在当前目录中生成一个.git目录,其中保存了所有有关Git的数据,但切勿手动更改.git里的文件。

Git根据文件的存在位置,有工作区、暂存区与版本库区3个概念,如图。

这3个概念的含义如下:

• 工作区:计算机里能看到的实际目录。工作区修改后执行git add命令,暂存区的内容会被更新,修改或者新增的文件会被写入git对象区,将对象的ID记录在暂存区的索引中。

• 暂存区:有时也叫做索引(index),一般存放在.git目录下的index文件中。当执行git commit操作后,暂存区的目录会被写入版本库中,master会做相应的更新。而当执行git checkout与对应的文件时,暂存区的文件会覆盖工作区的文件,清除工作区中还没有添加到暂存区的改动。

• 版本库区:工作区下会存在一个.git目录,称之为版本库区。当执行git reset指令时,版本库区的目录树会替换暂存区的目录,但是工作区不受影响。当执行git checkout HEAD时,HEAD指向的master分支会覆盖工作区及暂存区的文件,这个指令较为危险,容易把没有提交的文件清除掉。

当多人协同开发或者需要有多个不同的版本时,就需要用到Git的分支管理功能了,这也是Git极为强大与重要的功能之一。版本管理主要有以下4个指令:

git branch branchname           # 创建一个名为branchname的分支git checkout branchname         # 切换到branchname的分支,git branch也可以查看当                                                          前的Git分支git checkout -b branchname      # 创建一个名为branchname的分支,并切换到该分支,十分常用git merge                               # 合并分支

当然,Git还有git log、git status等重要的指令,在此不一一展开。如果想要使用远程的Git仓库,不依赖于本地计算机,并进行仓库的社交,GitHub就派上用场了。

GitHub是一个基于Git的代码托管平台,是目前最为流行的代码托管服务,已拥有超过400万个项目。如果想要使用GitHub,首先需要在其官网注册一个账号,并使用创建仓库的命令创建名为repository的仓库。

为了能将自己本地的代码提交到GitHub上,还需要添加GitHub账号可以识别的秘钥,具体指令如下:

ssh-keygen -t rsa -C "youremail@youremail.com"

上述邮箱为注册GitHub时使用的邮箱。执行上述指令后,一路按回车键,会在~/.ssh文件夹下生成id_rsa.pub文件,复制里边的秘钥并粘贴到GitHub账号的SSH Keys里,即可实现本地与GitHub仓库的配对。

完成配对后,可以使用git clone命令将远程仓库拉取到本地。

git clone username@host:/path/to/repository

在本地进行代码的开发,并以此执行git add、git commit命令后,使用git push可以实现将本地版本仓库内的代码推到GitHub上。

git push origin master

2.高效编辑器:Vim

Vim是一个功能强大且可以定制功能的文本编辑器。

在Linux终端中,使用vim file命令即可以打开一个Vim环境。Vim有下面3种基本模式。

• 命令模式:刚打开Vim时就进入了命令模式,此时敲入任何字母都代表了命令,而不是直接插入到光标处。命令模式下有一些常用的基本命令,可以有效提升开发者的效率。

• 输入模式:在命令模式中输入i字符就进入了输入模式,在该模式下可以进行代码的增、删等操作。

• 底线命令模式:在命令模式下输入“:”(英文冒号)即进入底线命令模式,这里有更为丰富的命令,如保存、退出和跳转等。

以上3种模式的切换方式如图。

下面介绍一些常用的Vim命令。首先是从命令模式到输入模式的切换,为了快速锁定插入代码的位置,会有不同的需求,这里列举了常见的5种切换方式,如表所示。

在Vim中,我们经常需要上下移动光标,浏览程序,这时就需要快速跳转的功能。这里列举几种常见的光标移动方式,如表所示。

当然,Vim对于复制、搜索、保存等方式也有方便的处理方法,这里统一放到了下表中。

3.Python调试器:pdb

如果你还在继续使用print()函数来调试Python程序的话,你需要了解一个新的工具:pdb。

pdb是Python自带的一个库,可以提供交互式的调试功能,提供了断点设置、单步调试、源码查看、堆栈查看等丰富的功能。pdb类似于C++中的gdb调试工具。通常有两种方式来使用pdb,第一种方式是在命令行中加入pdb模块来启动Python程序,如下:

python3 -m pdb test.py

这种方式会从程序第一行开始就进入交互环境,适用于较小的程序调试。在更大型的工程里,我们更习惯用插入断点的方式进行调试,如下:

import pdbpdb.set_trace()

将set_trace()函数放到代码中的任何地方,执行程序时都会在此处产生一个断点,尤其是在使用PyTorch这种极度Python化的框架时,使用极为方便。pdb主要的调试命令如表所示。

4.网页可视化:Jupyter

Jupyter Notebook是一个基于Web应用的交互式笔记本,使用者可以方便地在Web端与Python程序进行交互,以及进行数据的可视化与分析。Jupyter由IPython Notebook发展而来,现已支持40多种编程语言。在学习深度学习及物体检测算法中,使用Jupyter主要有两点好处。

• 数据可视化:Jupyter的交互界面简洁优雅,并且对Python的多种可视化库提供了支持,如Matplotlib、Pillow、Pandas等,这对于训练数据的分析、模型的评测等都提供了极大的帮助。物体检测本身也是视觉任务,可视化是一个至关重要的部分。

• 远程访问:为了使用更多的GPU资源,我们通常会将训练任务提交到服务器中,导致无法轻易地访问查看服务器数据。对于Jupyter而言,只需在服务器中开启Notebook服务,即可在本地的浏览器端进行访问,并且对于系统、环境都没有限制。

使用pip工具可以轻松地安装Jupyter,代码如下:

# Python 2pip2 install Jupyter# Python 3pip3 install Jupyter

安装成功后,在需要操作的目录下输入jupyter notebook即可开启Jupyter服务。如果是在本地执行的服务,则可以在浏览器中输入http://127.0.0.1:8000,即可打开Jupyter界面。

upyter默认使用8000端口,如果是在远程服务器开启的服务,则浏览器中的IP也要相应地修改为服务器的IP。

5.任务托管:Screen

在远程服务器中,我们通常使用终端的脚本命令来执行模型的训练。训练通常会有几天时间,这时如果网络出现异常,或者有事需要关掉终端时,终端任务也会被杀掉,这显然不是我们想要看到的。因此,我们需要将任务托管到后台执行,这时Screen就派上用场了。

Screen是一款由GNU开发的软件,可用于多个命令行终端之间的自由切换与管理。即使网络断开,只要Screen本身没有停止,其内部执行的会话将一直保留。Screen软件可通过apt快速进行安装,如下:

sudo apt install screen

Screen软件的打开、关闭都十分简单,具体操作如表所示。





【声明】内容源于网络
0
0
麦科技AI
麦科技AI是有关:人工智能、python、西门子PLC、AI机器人、计算机视觉、电脑高效技能、无人机等知识的共享与传递。并且在这里你将获得有益的知识与方法。 让自己更优秀。欢迎您关注“麦科技AI”公众号!更多内容敬请期待!感谢您的支持!
内容 97
粉丝 0
麦科技AI 麦科技AI是有关:人工智能、python、西门子PLC、AI机器人、计算机视觉、电脑高效技能、无人机等知识的共享与传递。并且在这里你将获得有益的知识与方法。 让自己更优秀。欢迎您关注“麦科技AI”公众号!更多内容敬请期待!感谢您的支持!
总阅读178
粉丝0
内容97