AI部署001 - C++环境部署与服务器使用
AI部署001 - C++环境部署与服务器使用
1. 前言
学习AI的必经路线之一,AI模型的部署,当我们训练完模型后,想要把模型部署到我们的系统中,一般就需要考虑这个环节了。
对于常用的英伟达GPU,最常用的就是C++的TensorRT,因此这里也附上我自己的学习笔记。
本节内容
- 服务器的选择
- C++环境的部署
目录
文章目录
- AI部署001 - C++环境部署与服务器使用
- 1. 前言
- 2. 服务器选择和使用
- 3. VSCode本地与服务器配置
- 3.1 VSCode安装
- 3.2 本地VSCode配置
- 3.3 SSH连接服务器
- 3.4 配置远程服务器的VSCode环境
- 4. Python使用
- 4.1 确保python可以正常运行
- 4.2 debug配置
- 4.3 debug报错解决
- 5. windows下配置C++
- 5.1 安装mingw
- 5.2 安装g++
- 5.3 配置环境变量
- 5.4 测试是否安装成功
- 6. C++配置
- 6.1 测试C++正常运行
- 6.2 调试C++
- 7. 总结
2. 服务器选择和使用
这里采用的服务器是云服务器,平台选择的是:AutoDL,官网:https://www.autodl.com/home。
介绍一下,如何使用:
- 地区可以任意选择,然后选择GPU型号和GPU数量,这里由于是新手尝试C++,所以都选择最差的即可,比如10系列的GPU或者20系列的GPU:
- 比如,我这里选择北京地区 - 20系列的GPU,数量为1
- 然后,点击“1卡可租”的按钮,进入租赁协议
- 我们选择基础镜像即可,可以看到基础镜像也包好了必备的miniconda、深度学习框架等等,另外,我们也可以定制,比如选择pytorch1.8版本的Ubuntu系统:
-
然后点击创建并开机即可(记得账号内得有余额才行)
-
然后你就可以看到登录系统的SSH指令和密码
因为前期我们都用不到GPU,因此可以选择无卡模式启动,这样更省钱,一小时只要一毛钱:
3. VSCode本地与服务器配置
3.1 VSCode安装
这一部直接跳过,在自己电脑安装VSCode非常简单,如果不知道如何安装,可以在CSDN论坛百度搜索,非常详细。
3.2 本地VSCode配置
需要配置三个:
- Python
- C++
- SSH
打开VSCode,找到拓展插件部分,直接搜索python、C++、SSH,然后安装即可,以SSH安装为例子:
安装完毕后,建议重启下软件即可。
然后通过已安装那里,检测自己是否安装完成:
3.3 SSH连接服务器
在VSCode左下角找到远程连接,点击:
然后在弹出的窗口,输入我们服务器给我们的ssh指令,回车:
然后,在新弹出的窗口,输入我们的密码:
即可连接成功,如下所示:
3.4 配置远程服务器的VSCode环境
上面我们只部署了本地VSCode的环境,这里我们需要重新走一遍上面的流程,进行部署。
首先,你可以点开拓展,查看的确没有安装C++之类的:
因此,我们需要相同配置服务器,不过这里我们只安装:
- Python
- C++
流程和上面一样,非常简单。
4. Python使用
4.1 确保python可以正常运行
通过VSCode的可视化界面,选择Linux中的一个文件夹,然后在里面创建一个demo.py的测试文件,如下:
因为服务器自带conda,我们可以创建一个新的虚拟环境,然后运行我们的代码:
conda create --name test
conda activate test
python demo.py
不会使用conda的可以看我主页的anaconda的使用教程,很基础。
结果如下:
如果遇到报错:IMPORTANT: You may need to close and restart your shell after running ‘conda init’.
使用下面指令解决:(因为没有正确退出环境)
source activate
conda deactivate
4.2 debug配置
点击左侧的运行和调试:
VSCode调试代码,需要创建一个.json文件,不过不用担心,点击这个,然后勾选python File,即可自动创建这个json文件,如果不感兴趣,里面的相关参数可以不用研究,如果感兴趣,直接百度相关参数即可:
然后,就可以正常调试了,给程序打上断点,然后启用调试即可,如下:
4.3 debug报错解决
我遇到的错误是,说python版本过低,此时,可以如下操作:
- 在vscode下按下键盘:ctrl + shift + p
- 然后输入:Python: Select Interpreter
- 重新选择一个python解释器,建议选择python3.9以上的版本
- 这个时候在尝试debug就成功了,如下图演示:
5. windows下配置C++
5.1 安装mingw
下载地址:https://sourceforge.net/projects/mingw/。
这是一个包管理器,安装非常容易,这个非常小,可以直接默认安装:
安装完成后,弹出下面的界面说明安装成功:
5.2 安装g++
在上面的界面中,找到mingw32-gcc-g++、等安装完成后,再打开这个软件,安装一下mingw32-gdb.bin
,注意Class是bin的(后面调试需要它):
然后,点击左上角的Installation
菜单中的Apply changes
选项,然后管理器将开始在线安装或更新被选中的组件。
等待安装完成即可
5.3 配置环境变量
找到环境变量,可以是系统变量,也可以是用户变量,都可以:
把我们刚刚MinGW的路径加入其中,如果是默认的话,就在C盘:
5.4 测试是否安装成功
打开cmd,输入g++ -v或者gcc -v,如果显示下图说明成功安装:
6. C++配置
6.1 测试C++正常运行
先创建一个C++文件,比如demo.cpp,写下下面代码:
#include <iostream>
using namespace std;int main(){// 计算 1+2+3+4+5int sum {0};for (int i {0}; i < 5; i++)sum += i;// 输出结果cout << sum << endl;return 0;}
C++是编译型语言,需要先编译,然后执行编译后的文件:
g++ demo.cpp -o demo
# 执行cpp,输出到demo,注意我这是在Ubuntu系统下的,因此g++编译器已经有了
./demo
# 运行demo,返回结果
6.2 调试C++
我们前面不是已经配置了python嘛,它会在目录中生成一个.vscode/launch.json的文件,这个就是配置文件,我们打开它,然后点击右下角的”添加配置“,选择C++即可:
默认生成的配置文件,并不能直接使用,我们需要自己配置,最主要的是输入程序名字:
这里我建议大家直接拷贝我整理好的,可以直接使用的调试文件:
使用方法
- 新建一个名为.vscode的文件夹
- 在其下创建三个json文件,分别名为:
- launch.json
{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "${workspaceFolder}/release/${fileBasenameNoExtension}", // 文件所在的文件夹路径/release/当前文件的文件名,不带后缀"args": [],"stopAtEntry": false,"cwd": "${fileDirname}", // 文件所在的文件夹路径"environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "C/C++: g++ 生成活动文件" // tasks.json的label},{"name": "Python: Current File","type": "python","request": "launch","program": "${file}", // 当前文件// "program": "demo.py", // 指定文件"console": "integratedTerminal","justMyCode": true // false表示可以进入第三方库(如Pytorch)里进行调试}]
}
- settings.json
{"files.associations": {"iostream": "cpp","ostream": "cpp","array": "cpp","atomic": "cpp","*.tcc": "cpp","cctype": "cpp","clocale": "cpp","cmath": "cpp","cstdarg": "cpp","cstddef": "cpp","cstdint": "cpp","cstdio": "cpp","cstdlib": "cpp","cwchar": "cpp","cwctype": "cpp","deque": "cpp","unordered_map": "cpp","vector": "cpp","exception": "cpp","algorithm": "cpp","functional": "cpp","iterator": "cpp","memory": "cpp","memory_resource": "cpp","numeric": "cpp","optional": "cpp","random": "cpp","string": "cpp","string_view": "cpp","system_error": "cpp","tuple": "cpp","type_traits": "cpp","utility": "cpp","fstream": "cpp","initializer_list": "cpp","iosfwd": "cpp","istream": "cpp","limits": "cpp","new": "cpp","sstream": "cpp","stdexcept": "cpp","streambuf": "cpp","typeinfo": "cpp","bit": "cpp"}
}
- tasks.json
{"version": "2.0.0","tasks": [{"type": "cppbuild","label": "C/C++: g++ 生成活动文件","command": "C:/MinGW/bin/g++", // g++的路径"args": ["-fdiagnostics-color=always", // 颜色"-g", // 调试信息"-Wall", // 开启所有警告"-std=c++14", // c++14标准"${file}", // 文件本身,仅适用于演示,无法同时编译所有文件// "${fileDirname}/*.cpp", // 文件所在的文件夹路径下所有cpp文件"-o", // 输出"${workspaceFolder}/release/${fileBasenameNoExtension}" // 文件所在的文件夹路径/release/当前文件的文件名,不带后缀],"options": {"cwd": "${fileDirname}" // 文件所在的文件夹路径},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "编译器: C:/MinGW/bin/g++"}]
}
完成后,就可以对代码进行调试,它会把自动生成exe文件在一个名为releases的文件夹下,如下:
7. 总结
本节主要学习了C++的环境部署,因为C++一般都在Ubuntu上开发,因此还学习了远程服务器的选择与使用,还有vscode如何调试代码、如何远程连接Ubuntu等内容。
下一节的内容:速通C++基础知识。