EdgeBox_tx1_A200 PyTorch v1.9.0 环境部署

news2024/9/27 12:14:00

        大家好,我是虎哥,今天远程帮助几个小伙伴在A200 控制器上安装PyTorch v1.9.0 torchvision v0.10.0,中间也是经历了很多波折,当然,大部分是网络问题和版本适配问题,所以完事后,将自己完整可用的过程做个记录,分享给大家。我的硬件环境是A200控制器。核心是TX1,系统环境是:jetpack4.6.2 Ubuntu18.04,大家注意对应和区分。

目录

一、PyTorch 介绍

PyTorch的特性

二、安装环境确认说明

1.1 确认系统版本

1.2 确认L4T版本版本

1.3 确认Jetson版本

1.4 PYthon 版本:

三、安装环境步骤

3.1 PyTorch for Jetson v1.9.0下载安装

3.2 安装 torchvision v0.10.0

1、调大一些环境参数

2、调高虚拟内存,建议总内存至少大于10G

3、源码编译安装

3.3 验证安装

四、总结


一、PyTorch 介绍

        Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,pytorch的计算图是动态的,可以根据计算需要实时改变计算图。但由于Torch语言采用 Lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。作为经典机器学习库 Torch 的端口,PyTorch 为 Python 语言使用者提供了舒适的写代码选择。著名的avatarify(替身)的python版本是用pytorch实现的,项目见:https://github.com/alievk/avata

其官网入口为:https://pytorch.org/

中文教程入口:https://pytorch.apachecn.org/#/docs/1.4/README

        PyTorch既可以看做加入了GPU支持的numpy,同时也可以看成一个拥有自动求导功能的强大的深度神经网络,除了Facebook之外,它还已经被Twitter、CMU和Salesforce等机构采用。

        TensorFlow和Caffe都是命令式的编程语言,而且是静态的,首先必须构建一个神经网络,然后一次又一次使用相同的结构,如果想要改 变网络的结构,就必须从头开始。但是对于PyTorch,通过反向求导技术,可以让你零延迟地任意改变神经网络的行为,而且其实现速度 快。正是这一灵活性是PyTorch对比TensorFlow的最大优势。

        另外,PyTorch的代码对比TensorFlow而言,更加简洁直观,底层代码也更容易看懂,这对于使用它的人来说理解底层肯定是一件令人激 动的事。所以,总结一下PyTorch的优点:

  • 支持GPU

  • 灵活,支持动态神经网络

  • 底层代码易于理解

  • 命令式体验

  • 自定义扩展

        当然,现今任何一个深度学习框架都有其缺点,PyTorch也不例外,对比TensorFlow,其全面性处于劣势,目前PyTorch还不支持快速傅里 叶、沿维翻转张量和检查无穷与非数值张量;针对移动端、嵌入式部署以及高性能服务器端的部署其性能表现有待提升;其次因为这个框 架较新,使得他的社区没有那么强大,在文档方面其C库大多数没有文档。

PyTorch的特性

        PyTorch的祖先是Chainer,HIPS autograd,twitter-autograd.

这些库有以下两个鲜明的特征:

        动态的,运行时定义:一个动态框架仅仅通过运行期望的操作来对函数求导,这与实现一个预先符号求导的静态的图结构再多次运行的方式恰恰相反。这样一来就允许用户使用任何想要的宿主语言特性(如各种控制流结构),以每次迭代都要求执行的求导为代价。动态执行将PyTorch和TensorFlow,Caffe这样的静态架构区分开来了。

A dynamic framework defines the function to be differentinated simply by running the desired computation,as opposed to specifying a static graph structure which is differentiated symbolically ahead of time and then run many times.This permits users to use any host-language features they want(e.g.,arbirary control flow constructs),at the cost of requiring differentiation to be carried out every iteration.Dynamic execution distinguishes PyTorch from static frameworks like TensorFlow,Caffe,etc.

        简言之,动态计算图不容易优化,当不同输入的网路结构不一致时,难以并行计算,但是灵活性比较高。

        立即的,迫切的执行:一个迫切的框架在遇到张量运算时才会运行;它甚至避免去实现一个“前向的图”,仅仅记录下对于求导运算必要的内容。这就站在DyNet的对立面上了,DyNet采用懒评估的方式,在每一次训练迭代中都会真实地重建前向和反向图。立即执行允许CPU和GPU运算被管道化,但是放弃了整个网络进行优化和批处理。

An eager framework runs tensor computations as it encounters them;it avoids ever materializing a "forward graph", recording only what is necessary to differentiate the computation.This stands in contrast to DyNet,which employs lazy evaluation,literally rebuilding the forwards and backwards graph every training iteration.Immediate execution allows CPU and GPU computation to be pipelined,but gives up the opportunity for whole-network optimization and batching.

        但是让PyTorch从所有动态迫切执行地自动求导库中成了实现最快的一个,还要依赖于它地以下设计和实现选择:

        原地运算:原地运算会给自动求导带来危害,因为原地运算会使得在微分阶段将要用到的数据失效。此外,它们要求执行特殊的tape转换操作。针对这些问题,PyTorch实现了简单但有效的机制。

In-place operations pose a hazard for automatic differentiation,because an in-place operation can invalidate data that would be needed in the differentiation phase.Additionally,they require nontrivial tape transformations to be performed.PyTorch implements simple but effective mechanisms that address both of these problems.

        没有tape:传统反转模式求导记录一个tape(也叫Wengert列表),其作用是描述最初的执行操作的顺序,这个优化允许避免一个拓扑分类的实现。PyTorch(以及Chainer)避免了这个tape,取而代之的是,每一个中间结果只记录和它们计算有关子集。这也就意味着PyTorch的用户可以随心所欲地混合与匹配独立的图,以任何想要的方式(没有直接的同步)。以这种方式结构化图的另一个好处是,当图的一部分死去,就会被自动释放,这对于我们想要尽快释放大的内存块来说是一个重要的考虑。

Traditional reverse-mode differentiation records a tape(also known as a Wengert list) describing the order in which operations were originally executed;this optimization allows implementations to avoid a topological sort.PyTorch (and Chainer) eschew this tape;instead,every intermediate result records only the subset of the computation graph that was relevant to their computaion.This means PyTorch users can mix and match indepedent graphs however they like,in whatever threads they like(without explicit synchronization).An added benefit of structuring graphs this way is that when a portion of the graph becomes dead,it is automatically freed;an important consideration when we want to free large memory chunks as quickly as possible.

        用C++写核心逻辑:PyTorch起源于Python的库;但是,高昂的转换器消耗对于核心AD逻辑来说很快凸显出来。今天,大多数的核心逻辑都是用C++写的,并且将核心操作定义转化成C++仍在进行中。小心调优的C++代码是PyTorch能够实现相比其他框架低得多的开销的首要愿意。

PyTorch started its life as a Python library;however,it quickly became clear that interpreter overhead is too high for core AD logic.Today,most of it is written in C++,and we are in the process of moving core operator definitions to C++.Carefully tuned C++ code is one of the primary reasons PyTorch can achieve much lower overhead compared to other frameworks.

二、安装环境确认说明

        Jetpack默认已安装opencv、cuda、cudnn,故只需再安装pytorch即可,留意jetson是arm架构,需要下载对应的安装文件加以安装

1.1 确认系统版本

sudo lsb_release -a

1.2 确认L4T版本版本

head -n 1 /etc/nv_tegra_release
nvidia@TX1-A200:~$ head -n 1 /etc/nv_tegra_release
# R32 (release), REVISION: 7.2, GCID: 30192233, BOARD: t210ref, EABI: aarch64, DATE: Wed Apr 20 21:34:48 UTC 2022

说明使用的是jetpack4.6.2。

1.3 确认Jetson版本

jetson_release -v

        EdgeBox_tx1_A200 系统 TX1核心,我们已经安装了CUDA、cuDNN、等,具体的安装方法,使用官方对应的工具刷机安装,具体可以参考之前的文章。

https://blog.csdn.net/cau_weiyuhu/article/details/128026029

https://blog.csdn.net/cau_weiyuhu/article/details/128152847

1.4 PYthon 版本:

nvidia@nvidia-desktop:~$ python --version
Python 2.7.17
nvidia@nvidia-desktop:~$ python3 --version
Python 3.6.9

三、安装环境步骤

TX1专用下载地址,一定和jetpack的版本对应好,但是这个里面有些其实照着装也不能成功,主要是中间有些细节和出现错误后没有说明怎么解决。不过是很重要的参考。

https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048

但是上面的对应关系我自己安装总是在 torchvision出错。所以我决定找找官方容器是怎么安装的搭配的。功夫不负有心人,终于找到了。

网址入口:https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-pytorch

        所以其实有好几组版本可以选择,但是一定要找好对应关系,我们自己安装也使用这个搭配来安装:PyTorch v1.9.0 torchvision v0.10.0 按照这个组合试试。虽然只给了4.6.1的版本对应,但是还是在32.7.X的系统下的对应,我们按照这个来就可以。

3.1 PyTorch for Jetson v1.9.0下载安装

我们的环境是

Jetpack 4.6.2 [L4T 32.7.2]

网址入口:https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048

下载后,拷贝到A200系统。我是在WIN主机上用迅雷下载的。

然后使用TFTP拷贝到了控制器上。

当然也可以再A200控制系统系统内直接用命令下载:

wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.9.0-cp36-cp36m-linux_aarch64.whl

注意:以上下载方法我自己没有实验过去,我是公司网,443端口是封锁的。

安装:

sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev
pip3 install Cython
sudo pip3 install numpy torch-1.9.0-cp36-cp36m-linux_aarch64.whl

这个过程如果网不好,可能要多次尝试重复,包括换网等操作。

支持PyTorch v1.9.0安装成功。

3.2 安装 torchvision v0.10.0

1、调大一些环境参数

nvidia@nvidia-desktop:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 13929
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 13929
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
sudo gedit /etc/security/limits.conf 
#end 后增加这4条 主要是修改 max number of open files
nvidia soft nofile 65535
nvidia hard nofile 65535
root soft nofile 65535
root hard nofile 65535

 修改后重启sudo reboot,重启后查看环境量:

nvidia@nvidia-desktop:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 13929
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 13929
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

2、调高虚拟内存,建议总内存至少大于10G

jtop

先加10G的,总计12G的内存

此处注意,如果之前已经操作过,记得到根目录把之前的swapfile 删除掉,再重来一遍。不要重启,重启后就没有了

3、源码编译安装

#前提环境
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
​
#这个官方教程没写
pip3 install setuptools
#sudo  -H pip3 install -U pillow
#这步使用国内源也是可以过去的,就是费点时间,需要耐心
#sudo  -H pip3 install pillow --user -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
#执行这个
sudo pip3 uninstall pillow
sudo pip3 install 'pillow<7'
​
#如果上面一直安装不成功,超时,可以直接再WIN端迅雷下载,然后导入控制器进行手动安装
#下载链接
https://files.pythonhosted.org/packages/b3/d0/a20d8440b71adfbf133452d4f6e0fe80de2df7c2578c9b498fb812083383/Pillow-6.2.2.tar.gz
sudo pip3 install Pillow-6.2.2.tar.gz
​
#或者用8的版本,但是官方推荐用7以下的,所以这个可以预留尝试
#下载链接,可以迅雷下载挺快的,然后然后导入控制器进行手动安装
http://pypi.doubanio.com/packages/7d/2a/2fc11b54e2742db06297f7fa7f420a0e3069fdcf0e4b57dfec33f0b08622/Pillow-8.4.0.tar.gz#sha256=b8e2f83c56e141920c39464b852de3719dfbfb6e3c99a2d8da0edf4fb33176ed
​
​
#官网----克隆源代码----国内可能不好用
git clone --branch v0.10.0 https://github.com/pytorch/vision torchvision 
cd torchvision/
git checkout -b v0.10.0
#查看当前分支
git branch -a 
​
​
#国内用gitee
git clone --branch v0.10.0 https://gitee.com/zldtb/vision.git torchvision 
cd torchvision/
git checkout -b v0.10.0
#查看当前分支
git branch -a 

setuptools安装过程截图

pillow 安装过程图

torchvision 安装过程截图

#进入克隆后的目录
cd /home/nvidia/pytorch/torchvision
#设置环境变量后,编译安装,之前记得增加虚拟内存,总内存需要至少大于10G才保险
export BUILD_VERSION=0.10.0
sudo python3 setup.py install --user
安装过程截图:

这就是调大虚拟内存的原因,不然控制器就死机了。

验证通过

nvidia@TX1-A200:~/pytorch/torchvision$ python3
Python 3.6.9 (default, Mar 10 2023, 16:46:00) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torchvision
/home/nvidia/pytorch/torchvision/torchvision/__init__.py:26: UserWarning: You are importing torchvision within its own root folder (/home/nvidia/pytorch/torchvision). This is not expected to work and may give errors. Please exit the torchvision project source and relaunch your python interpreter.
  warnings.warn(message.format(os.getcwd()))
>>> print(torchvision.__version__)
0.10.0a0+300a8a4
>>> 

那个报警应该是权限的问题,如果有影响,处理一下权限就可以

3.3 验证安装

To verify that PyTorch has been installed correctly on your system, launch an interactive Python interpreter from terminal (python command for Python 2.7 or python3 for Python 3.6) and run the following commands:

python3
>>> import torch
>>> print(torch.__version__)
>>> print('CUDA available: ' + str(torch.cuda.is_available()))
>>> print('cuDNN version: ' + str(torch.backends.cudnn.version()))
>>> a = torch.cuda.FloatTensor(2).zero_()
>>> print('Tensor a = ' + str(a))
>>> b = torch.randn(2).cuda()
>>> print('Tensor b = ' + str(b))
>>> c = a + b
>>> print('Tensor c = ' + str(c))
nvidia@nvidia-desktop:~/Workspace/Pytorch$ python3
Python 3.6.9 (default, Nov 25 2022, 14:10:45) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.__version__)
1.7.0
>>> print('CUDA available: ' + str(torch.cuda.is_available()))
CUDA available: True
>>> print('cuDNN version: ' + str(torch.backends.cudnn.version()))
cuDNN version: 8201
>>> a = torch.cuda.FloatTensor(2).zero_()
>>> print('Tensor a = ' + str(a))
Tensor a = tensor([0., 0.], device='cuda:0')
>>> b = torch.randn(2).cuda()
>>> print('Tensor b = ' + str(b))
Tensor b = tensor([-0.3136, -0.3914], device='cuda:0')
>>> c = a + b
>>> print('Tensor c = ' + str(c))
Tensor c = tensor([-0.3136, -0.3914], device='cuda:0')

验证版本

python3
>>> import torchvision
>>> print(torchvision.__version__)

四、总结

整体我自己安装的时候,中间还是遇到很大麻烦事,但是好在都找到了对应的解决方案,分享一个小技巧:

我在文档中留了很多链接,可以直接用迅雷下载后转到控制器内再安装,可以省不少事。

纠错,疑问,交流: 911946883@qq.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/838409.html

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

相关文章

38.利用matlab解 有约束无约束的参数估计对比(matlab程序)

1.简述 1.离散型随机变量的极大似然估计法: (1) 似然函数 若X为离散型, 似然函数为 (2) 求似然函数L(θ)的最大值点 θ, 则θ就是未知参数的极大似然估计值. 2.连续型随机变量的极大似然估计法: (1) 似然函数 若 X 为连续型, 似然函数为 (2) 求似然函数L(θ)的最大值点θ, 则…

webpack基础知识四:说说webpack中常见的Plugin?解决了什么问题?

一、是什么 Plugin&#xff08;Plug-in&#xff09;是一种计算机应用程序&#xff0c;它和主应用程序互相交互&#xff0c;以提供特定的功能 是一种遵循一定规范的应用程序接口编写出来的程序&#xff0c;只能运行在程序规定的系统下&#xff0c;因为其需要调用原纯净系统提供…

如果网站用了CDN,我怎么找到它的真实IP?

0x01 验证是否存在CDN 方法1&#xff1a; 很简单&#xff0c;使用各种多地 ping 的服务&#xff0c;查看对应 IP 地址是否唯一&#xff0c;如果不唯一多半是使用了CDN&#xff0c; 多地 Ping 网站有&#xff1a; http://ping.chinaz.com/ http://ping.aizhan.com/ http://ce.…

Darshan的安装与使用

下载Darshan源码 官网下载地址&#xff1a;https://www.mcs.anl.gov/research/projects/darshan/download/ 解压源码压缩包 #解压安装包 tar -xvzf darshan-<version-number>.tar.gz #生成配置文件 cd darshan-<version-number> ./prepareDarshan的源文件结构主…

Qt开发,编译报错:error: C2001: 常量中有换行符

一、问题描述 Qt开发&#xff0c;编译报错&#xff1a;error: C2001: 常量中有换行符 E:\work\xxx.cpp:1: warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 E:\work\xxx.cpp:66: error: C2001: 常量中有换行符 E…

聊聊 Docker 和 Dockerfile

目录 一、前言 二、了解Dockerfile 三、Dockerfile 指令 四、多阶段构建 五、Dockerfile 高级用法 六、小结 一、前言 对于开发人员来说&#xff0c;会Docker而不知道Dockerfile等于不会Docker&#xff0c;上一篇文章带大家学习了Docker的基本使用方法&#xff1a;《一文…

无向图-已知根节点求高度

深搜板子题&#xff0c;无向图&#xff0c;加边加两个&#xff0c;dfs输入两个参数变量&#xff0c;一个是当前深搜节点&#xff0c;另一个是父节点&#xff08;避免重复搜索父节点&#xff09;&#xff0c;恢复现场 ///首先完成数组模拟邻接表#include<iostream> #incl…

uniapp微信小程序中打开腾讯地图获取用户位置信息

实现的效果 第一步&#xff1a;首先登录微信公众平台 , 需要用到AppID 第二步&#xff1a; 注册登录腾讯位置服务 注册需要手机号和邮箱确认&#xff0c;然后创建应用 创建后点击添加key 添加后会生成key&#xff0c;后面会用到这个key 第三步&#xff1a; 登录微信公众平台&a…

升级你的GitHub终端认证方式:从密码到令牌

升级你的GitHub终端认证方式&#xff1a;从密码到令牌 前言 GitHub官方在2021年8月14日进行了一次重大改变&#xff0c;它将终端推送代码时所需的身份认证方式从密码验证升级为使用个人访问令牌&#xff08;Personal Access Token&#xff09;。这个改变引起了一些新的挑战&am…

棒球联盟对于市场发展规划·棒球1号位

棒球联盟对于市场发展规划 1. 棒球联盟市场发展背景分析 在深入探讨棒球联盟市场发展背景之前&#xff0c;我们首先要明确&#xff0c;棒球&#xff0c;作为一种全球流行的体育项目&#xff0c;其在市场上的发展具有相当悠久的历史。棒球文化的起源可以追溯到上个世纪初&#…

从价值的角度看,为何 POSE 通证值得长期看好

PoseSwap 是 Nautilus Chain 上的首个 DEX&#xff0c;基于 Nautilus Chain 也让其成为了首个以模块化构建的 Layer3 架构的 DEX。该 DEX 本身能够以 Dapp 层&#xff08;Rollup&#xff09;的形态&#xff0c;与其他应用层并行化运行。

MySQL 的事件调度器

MySQL 的事件调度器可以通过以下方式进行管理&#xff1a; 1】查看事件调度器的状态 SHOW VARIABLES LIKE event_scheduler;2】启用/禁用事件调度器 SET GLOBAL event_scheduler ON;SET GLOBAL event_scheduler OFF; 注意&#xff1a;启用/禁用事件调度器需要具有 SUPE…

捕捉时刻:将PDF文件中的图像提取为个性化的瑰宝(从pdf提取图像)

应用场景&#xff1a; 该功能的用途是从PDF文件中提取图像。这在以下情况下可能会很有用&#xff1a; 图片提取和转换&#xff1a;可能需要将PDF文件中的图像提取出来&#xff0c;并保存为单独的图像文件&#xff0c;以便在其他应用程序中使用或进行进一步处理。例如&#xff…

Redis 和 Mysql 如何保证数据一致性

项目场景&#xff1a; 一般情况下&#xff0c;Redis 用来实现应用和数据库之间读操作的缓存层&#xff0c;主要目的是减少数据库 IO&#xff0c;还可以提升数据的 IO 性能。 如下图所示&#xff0c;这是它的整体架构。 当应用程序需要去读取某个数据的时候&#xff0c;首先会先…

【uniapp APP分享到微信】

uniapp APP分享到微信 使用uni.share分享方法说明一. 配置二. 分享到聊天页面分享图片分享文字分享图文分享为小程序 三. 分享到朋友圈分享图片分享文字分享图文 四. 参考文档链接 使用uni.share分享方法 说明 本方法使用uniapp 第三方服务 uni.share&#xff08;&#xff09…

vue中axios二次封装并发起网络请求配置

1.安装axios npm i axios 2.导入 //对axios进行二次封装 import axios from "axios"// 创建axios实例&#xff0c;其实request就是axiosconst requests axios.create({// 发请求的时候自动出现api// baseURL:"api",// 请求超时的时间timeout:5000, })…

element+vue 之动态form

1.页面部分 <div v-for"(item,index) in formList" :key"index"><el-col :span"6" v-if"item.inputType0"><el-form-item :label"item.conditionName" :prop"item.conditionCode":rules"{req…

Agents改变游戏规则,亚马逊云科技生成式AI让基础模型加速工作流

最近&#xff0c;Stability AI正式发布了下一代文生图模型——Stable Diffusion XL 1.0这次的1.0版本是Stability AI的旗舰版生图模型&#xff0c;也是最先进的开源生图模型。 在目前的开放式图像模型中&#xff0c;SDXL 1.0是参数数量最多的。官方表示&#xff0c;这次采用的…

Jenkins触发器时间、次数设定

触发器触发条件介绍 触发器触发条件公式&#xff1a;由5颗星组成 * * * * * 分别代表&#xff1a;分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6) 企业项目中常用场景介绍 场景1&#xff1a;接口脚本部分测试通过&#xff0c;部分还在进行&#xff0c;回归测试脚本执行…

解密HTTP代理爬虫中的IP代理选择与管理策略

在当今数据驱动的世界中&#xff0c;HTTP代理爬虫作为一项重要的数据采集工具&#xff0c;其成功与否往往取决于IP代理的选择与管理策略。作为一家专业的HTTP代理产品供应商&#xff0c;我们深知IP代理在数据采集中的重要性。在本文中&#xff0c;我们将分享一些关于HTTP代理爬…