书生模型实战L0---Python(包括VS code远程连接服务器和远程Debug)

书生模型实战系列文章目录

第一章 入门岛L0(Linux)
第二章 入门岛L0(python)



作业

来自https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Python/task.md

提交作业

Python实现wordcount

Vscode连接InternStudio debug笔记


一、pip和conda换源?

pip换源

 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

conda换源
各系统都可以通过修改用户目录下的 .condarc 文件来修改镜像源。Windows 用户无法直接创建名为 .condarc 的文件,可先执行 conda config --set show_channel_urls yes 生成该文件之后再修改。在用户目录找到.condarc 文件后,使用文本编辑器打开,将下面的内容复制进去并保存。

 channels:   - defaults show_channel_urls: true default_channels:
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels:
 conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/

接着在命令行中运行 conda clean -i 清除索引缓存,保证用的是镜像站提供的索引。

二、广播机制

允许我们对形状不完全相同的数组进行算术运算

1.广播的基本规则

规则一:维度对齐

按维度来对齐,小维度的数组在其前面补1,直到两个数组的维度数相同。

规则二:兼容维度

如果两个数组在某个维度上的大小相同,或者其中一个数组在该维度上的大小为1,则这两个数组在该维度上是兼容的。

规则三:输出形状

广播后的输出数组的形状是输入数组形状在各个维度上的最大值。

案例

# 手动模拟广播机制
a = np.array([1, 2, 3])  # 形状为 (3,)
b = np.array([[1], [2], [3]])  # 形状为 (3, 1)
print('a\n',a)
print('b\n',b)

a = np.expand_dims(a,0)
#先让两边维数相等
print('\na的形状在逻辑上被扩展为(1,3),a为\n',a)
print('此时a与b的形状为: a {},b {}'.format(a.shape,b.shape))
#此时a与b的形状为: a (1, 3),b (3, 1)
#a会在第0轴上重复三次变成(3,3)
a_broadcast = np.repeat(a,3,0)
#a会在第1轴上重复三次变成(3,3)
b_broadcast =np.repeat(b,3,1)
print('\n广播后的a_broadcast为\n',a_broadcast)
print('广播后的b_broadcast为\n',b_broadcast)
print('\na+b经过广播后就是a_broadcast+b_broadcast\n',a_broadcast+b_broadcast)
# 手动模拟广播机制
a = np.array([1, 2, 3])  # 形状为 (3,)
b = np.array([[1], [2], [3]])  # 形状为 (3, 1)
print('a\n',a)
print('b\n',b)

a = np.expand_dims(a,0)
#先让两边维数相等
print('\na的形状在逻辑上被扩展为(1,3),a为\n',a)
print('此时a与b的形状为: a {},b {}'.format(a.shape,b.shape))
#此时a与b的形状为: a (1, 3),b (3, 1)
#a会在第0轴上重复三次变成(3,3)
a_broadcast = np.repeat(a,3,0)
#a会在第1轴上重复三次变成(3,3)
b_broadcast =np.repeat(b,3,1)
print('\n广播后的a_broadcast为\n',a_broadcast)
print('广播后的b_broadcast为\n',b_broadcast)
print('\na+b经过广播后就是a_broadcast+b_broadcast\n',a_broadcast+b_broadcast)

2.VS code中如何debug

2.1 Vscode远程连接服务器

首先需要安装Remote-SSH插件
安装SHH插件
安装完成后进入remot explorer,在ssh目录下新建一个ssh链接

新建ssh链接

此时会有弹窗提示输入ssh链接命令,回车后还会让我们选择要更新那个ssh配置文件,默认就选择第一个就行(如果你有其他需要的话也可以新建一个ssh配置文件)。

输入ssh链接命令
ssh配置文件

使用ssh -p 端口号 root@ip,远程连接,输入完ssh后,再输入密码
远程连接啥系统就选啥

2.2 Vscode初始化配置(***************************************************************)

首次连接会进行一些初始化的设置,后面打开文件夹的时候会再需要输入密码。
看到左下角远程连接已经显示ssh连接地址。
左下角成功标志

单击vscode页面下方有一个X和!的位置可以快速打开vscode的控制台,然后进入TERMINAL。TIPS:右上方的+可以新建一个TERMINAL。
进入控制台

打开文件夹。在VSCode中打开直接打开你想要debug的Python文件所在的文件夹。这里会需要再次输入密码。单击Open Folder或者左上角菜单File->Open Folder。
打开文件夹

2.3 单步执行代码

2.3.1 设置断点

在代码行号旁边点击,可以添加一个红点,这就是断点(如果不能添加红点需要检查一下python extension是否已经正确安装)。当代码运行到这里时,它会停下来,这样你就可以检查变量的值、执行步骤等。
设置断点

2.3.2 启动debug

点击VSCode侧边栏的“Run and Debug”(运行和调试),然后点击“Run and Debug”(开始调试)按钮,或者按F5键

启动debug

单步执行代码

debug面板各按钮功能介绍:

1: continue: 继续运行到下一个断点

2: step over:跳过,可以理解为运行当前行代码,不进入具体的函数或者方法。

3: step into: 进入函数或者方法。如果当行代码存在函数或者方法时,进入代码该函数或者方法。如果当行代码没有函数或者方法,则等价于step over。

4: step out:退出函数或者方法, 返回上一层。

5: restart:重新启动debug

6: stop:终止debug

2.4 使用命令行进行debug

很多时候我们要debug的不止是一个简单的python文件,而是很多参数,参数中不止会有简单的值还可能有错综复杂的文件关系,甚至debug一整个项目。这种情况下,直接使用命令行来发起debug会是一个更好的选择。

2.4.1 vscode设置

点击VSCode侧边栏的“Run and Debug”(运行和调试),单击"create a lauch.json file"
在这里插入图片描述
选择debugger时选择python debuger。选择debug config时选择remote attach就行,随后会让我们选择debug server的地址,因为我们是在本地debug,所以全都保持默认直接回车就可以了,也就是我们的server地址为localhost:5678。
在这里插入图片描述
配置完成后会有个json文件,关掉即可。

2.4.2 debug命令行(如何在命令行中发起debug)

很多时候我们要debug的不止是一个简单的python文件,而是会有很多参数。参数中不止会有简单的值还可能有错综复杂的文件关系,甚至debug一整个项目。这种情况下,直接使用命令行来发起debug会是一个更好的选择。

安装debugpy

pip install debugpy
python -m debugpy --listen 5678 --wait-for-client ./myscript.py   这个需要权限的

./myscript.py可以替换为我们想要debug的python文件,后面可以和直接在命令行中启动python一样跟上输入的参数。记得要先在想要debug的python文件打好断点并保存。
–wait-for-client参数会让我们的debug server在等客户端连入后才开始运行debug。在这就是要等到我们在run and debug界面启动debug。

2.4.3 使用命令行简化命令
python -m debugpy --listen 5678 --wait-for-client

这个命令太长了,每次都打很麻烦。这里我们可以给这段常用的命令设置一个别名。
linux系统中,可以对 ~/.bashrc 文件中添加以下命令

alias pyd='python -m debugpy --wait-for-client --listen 5678'
source ~/.bashrc

这样之后使用 pyd 命令(你可以自己命名) 替代 python 就能在命令行中起debug了,之前的debug命令就变成了pyd ./myscript.py


感受

上海人工智能实验室是有大格局的。
这节课的让我学习了vscode的远程连接和debug,很早之前就想学习了,但是一直被搁置,感谢优秀的团队做的优秀的课程。
人工智能发展到现在,即使是一个完全不懂代码的小孩,也可以使用一个大模型来写出第一个任务的代码。那么我们未来要做的还是深挖技术细节么?我个人认为技术必须了解,但是最重要的是创新,让大模型充当一个天才助手,辅助你做你想做的事。


参考链接

https://aicarrier.feishu.cn/wiki/VRgCwVAVziIMI9kvvolcA8xUndg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值