手把手带你走出新手村:Ubuntu 22.04 + Transformer 搭建攻略

        写在前面:现目前关于transformer的教程,网上的大多数教程要么只有环境的安装(也不知道什么时候安装哈哈哈),要么是只给出代码(可能还存在一些问题,并且根本不知道怎么样才能跑起来,常常会发出一个疑问:这些代码写在哪里呀)。总言之,缺少一个从环境部署到项目跑通的一个全栈式流程。因此,在本教程中,我将为你提供这样的全栈式流程(哦对了,之所以不手搓,是因为我想直接debug别人的代码来理解,其实这也是对于初学者比较好的方式)。此外,我还将告诉你,你在搭建过程中可能遇到的一些问题的解决方法。如果你已经准备好了,那我们开始吧!!!

一. 环境搭建(基于pytorch的安装)

        这是因为现在主流的项目都是基于pytorch的。那么在安装pytorch之前,需要先具备Anaconda环境。如果已经有Anaconda的同学可以直接跳到1.2节。

检查环境中是否已经安装Anaconda

$ conda -version
conda: command not found

        命令没有找到,说明Linux中没有安装Anaconda。如果安装了Anaconda,则会显示版本号。

1.1 Anaconda安装

1.查看版本

查看Linux版本对应的Anaconda的版本,Anaconda的官网(https://repo.anaconda.com/archive/),xxx为服务器的名称,因为我是在服务器上使用的,你的linux环境也可以,这个不是重点,重点是架构类型。

$ uname -a

Linux xxx 6.8.0-57-generic #59~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 19 17:07:41 UTC 2 x86_64 x86_64 x86_64 GNU/Linux  #xxx为你服务器的名称
x86_64 → 选 x86 版本

aarch64/arm64 → 选 ARM64 版本

s390x → 选 IBM Z 版本

我的是x86_64的,所以选择x86版本。

 2.使用wget下载

$ wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
下载过程截图

        然后开始安装,安装命令如下:

$ bash Anaconda3-2024.10-1-Linux-x86_64.sh 
$Anaconda3-2024.10-1-Linux-x86_64.sh是你下载的安装包的名称,你的可能不叫这个

        输入之后,需要一直按回车键知道出现询问 yes or no(其实就是我们在windows下询问是否接受xxx协议)时,在命令行输入yes即可(表示接受)。然后需要你确认安装路径,如果不需要修改直接按回车即可,如果需要修改输入你指定的路径即可。(无论是否修改,都需要记住这个路径!!!!

        等待安装完成后,他会出现询问你是否初始化配置命令。直接输入yes即可。它会自动帮你初始化配置文件~/.bashrc

        完成之后,你的~/.bashrc文件中将自动出现这一段信息。下面我们将会告诉你怎么打开~/.bashrc文件并完成环境变量的配置。

conda初始化信息

 3.修改环境变量

        进入到配置文件中,在文档末尾加入Anaconda的路径即可。

$ vim ~/.bashrc    #打开配置文件

        现在你就进入了文件中,在文档末尾加入Anaconda的路径即可。

#添加路径(Linux的基本操作:A 切换到insert模式,输入export路径(下面这一段)即可,然后按esc,输入“:wq!”即可保存退出)

export PATH="/home/你的用户名/anaconda3/bin:$PATH" #/home/你的用户名/anaconda3/ 为anaconda的安装路径,一般都是这个

         最后激活配置        

$ source ~/.bashrc  #激活配置文件

4.检查是否安装成功

$ conda --version
conda 24.9.2

现在就出现了版本号,说明安装成功!!!!

致谢:Ubuntu纯命令行安装Anaconda_ubuntu命令行安装anaconda-CSDN博客

1.2 Pytorch安装

1.创建pytorch环境

$ conda create -n pytorch python=3.10  #创建一个名为pytorch的环境,python的版本是3.10

需要确认两次,每次确认时只需要输入y即可。

2.激活环境

$ source activate pytorch

        命令行就会从base切换到pytorch(你的环境的名字哈)

3.使用conda命令安装与显卡驱动兼容的pytorch版本

1). 查看显卡驱动

$ nvidia-smi #Nvidia显卡的查看命令
显卡信息(Nvidia显卡)

GPU 名称: NVIDIA GeForce RTX 4090

Driver Version(驱动版本): 535.230.02

CUDA Version(CUDA 版本): 12.2

CUDA Toolkit 11.8 需要的最低驱动版本是 520.61,所以在我们的环境中可以安装CUDA Toolkit 11.8(这是一个比较稳定的版本,同时与4090的sm_89是匹配的)。

题外话:我之前安装了一个cuda10.1,在测试cuda时出现了与4090不兼容的情况。

就需要去官网(Previous PyTorch Versions)找到匹配版本的安装命令。

2). 选择合适的pytorch版本

这个与你的项目有关啦!比如我后续需要用到的是hugging face上的项目,他要求2.1.xx以上版本的pytorch,所以我最开始下载的2.0.0总是出现有些库不全的问题(我这里选择了稳定的2.3.0的,基本与很多项目都兼容,一般来说不要太低也不要最新)。

查看显卡驱动复制到命令行回车运行即可。

$ conda install pytorch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 pytorch-cuda=11.8 -c pytorch -c nvidia

3). 激活环境 

$ source activate pytorch

4). 检查是否安装成功 

$ python --version #检查python版本

        如果你在创建pytorch环境时指定了3.10的话,一般输出就是3.10.x。下面我们在python交互式命令行中运行一些代码来测试一下。

$ python

        这时候就进入了python命令行中,然后输入下面几行,回车后,输出为True即可正常调用GPU。

import torch   #导入torch包print(f"PyTorch version: {torch.__version__}") #输出pytorch的版本print(f"CUDA available: {torch.cuda.is_available()}") #输出CUDA是否可用
#查看cuda和显卡信息
if torch.cuda.is_available():
...     print(f"CUDA version PyTorch is built with: {torch.version.cuda}") #输出CUDA版本
...     print(f"Number of GPUs available: {torch.cuda.device_count()}")    #可用的显卡数目
...     for i in range(torch.cuda.device_count()):
...             print(f"GPU {i}: {torch.cuda.get_device_name(i)}")        #依次输出显卡的名称
#简单测试GPU计算
 x = torch.rand(5, 3)
 if torch.cuda.device_count() > 0:
...     x = x.cuda()
...     print(f"Tensor on GPU: {x.is_cuda}")
...     print(f"GPU tensor device: {x.get_device()}")

        注意:if下面那个语句在输入时,一定要先输入tab键(表示在if里面,这不像C语言里面右花括号可以识别,所以保持良好的代码风格也很重要哦),不然会报错。(你可以测试一下,会爆什么错误。)

输出结果

二. Tansformer实现

        我这里是直接克隆的hugging face的项目。哦对了,网上还有很多是使用pip install transformers这样的命令直接调取的,因为我后续想要debug代码,所以不想采取这种方式。

1.克隆代码仓库

$ git clone https://github.com/huggingface/transformers.git #克隆项目

        在使用这个命令你可能会出现卡在把某一个连接中,而导致连接超时。你可以选择设置git clone的镜像获取,也可以采取下面的方式:(注意:我不建议在Windows下下载然后将压缩包移动到虚拟机中,因为我之前就是但是后续还是会出现连接超时的问题,感觉治标不治本,而且可能在不同环境中下载里面的文件也会有所不同,直接复制可能会出现与Linux系统不同的情况。最好避免) 

        我选择了使用码云 (Gitee) 作为中转,具体步骤如下:

  • 访问 Gitee 官网并登录/注册: Gitee - 基于 Git 的代码托管和研发协作平台                               注意一下:注册的用户名不要用中文,因为这个会成为你之后的路径的一部分(你懂的)。如果之前已经注册过了并使用的中文,可以在个人资料中修改。
  • 创建新仓库并选择“导入仓库”: 在 Gitee 页面点击"+" 新建

  • 进入之后,点击导入

 

  • 等待导入完成: Gitee 会开始从 GitHub 拉取仓库的所有内容。这个过程在 Gitee 服务器之间进行,通常比你直接从本地克隆快。导入进度可以在页面上看到。
  • 从 Gitee 克隆仓库: 导入完成后,进入你在 Gitee 上创建的这个仓库页面。复制这个 Gitee 仓库的克隆地址(可以查看项目直接复制的)(通常是 https://gitee.com/<你的Gitee用户名>/<仓库名>.git)。
  • 在你的终端中使用新的地址进行克隆:

$  git clone https://gitee.com/xx(用户名)/transformers.git

2.切换到你的transformers的文件目录下,并安装transformer库和项目的相关依赖等

$ cd transformer  #切换到transformer中

$ pip install -e .     #安装命令

我需要解释一下这个命令: 

  •         1. pip install: 使用 pip 包管理器进行安装。
    •         2. -e .: 这是关键。-e 表示“editable”(可编辑)模式,. 表示当前目录。这条命令会读取当前目录(即 transformers 仓库目录)下的 setup.py 或 pyproject.toml 文件,并根据文件内容将 Transformers 库以及它所依赖的其他 Python 包(如 tokenizers, safetensors, tqdm, numpy, scipy 等)安装到你的 当前 Conda 环境 中。 使用 -e 模式安装的好处是,Python 环境会直接链接到你克隆下来的源代码目录。当你修改了 transformers 仓库目录中的源代码文件后,这些修改会立即在你使用这个库的代码中生效,无需重新安装。这对于后续你想调试或修改库的源码非常方便。
  • 3. 验证安装(同样需要先输入 python ,进入到python的交互式命令中)

  • >>> import transformers
    >>> print(f"Transformers version: {transformers.__version__}")
    >>> try:
    ...     from transformers import pipeline
    ...     pipe = pipeline("sentiment-analysis")
    ...     print("Successfully imported transformers and pipeline.")
    ... except Exception as e:
    ...     print(f"Failed to import transformers components: {e}")

    输出结果显示:

  • 4. 运行项目

    •         在hugging face中有很多自带的模型,如下图所示:

        在这里我们选择text-classification为例进行演示,现在我们切换到该路径下(你现在应该是在transformers目录下),输入下面命令即可切换。 

$ cd examples/pytorch/text-classification

        在这个目录下,你将会看到一个README文件,里面将给出运行的命令。这里我们就直接给出命令,不查看了。如果你要运行其他的,查看这个文件即可。(下面两条命令一行一行的输入哈!)

$ export TASK_NAME=mrpc #插入环境变量
$ python run_glue.py --model_name_or_path google-bert/bert-base-cased --task_name $TAS                                                                                    K_NAME --do_eval --output_dir ~/transformers_outputs/mrpc_eval/ --per_device_eva                                                                                    l_batch_size 32 #脚本运行命令

下面,我将说一下这里会遇到的一些问题:

  1.  不要分行输入(也就是直接复制README中的代码),他很有可能会检测不到一些命令而报错。(具体的报错内容你可以测试一下,一般来说和图x类似)。解决方法:放在一行,向我上面那样。
  2. 遇到类似ModuleNotFoundError: No module named 'datasets'问题,这个最简单,没有就下载,类似的应该还有evaluate。用下面这个命令安装就好。
$  pip install datasets evaluate

         3. 如果遇到这个问题,不要慌。把anaconda删干净了重新来就行。

        继续运行!!!!!  (一行一行输入) 

$ export HF_ENDPOINT=https://hf-mirror.com #添加数据源的镜像,以防止网络连接找不到
$ export TASK_NAME=mrpc   #添加环境变量
$  python run_glue.py --model_name_or_path google-bert/bert-base-cased --task_name $TAS                                                                                    K_NAME --do_eval --output_dir ~/transformers_outputs/mrpc_eval/ --per_device_eva                                                                                    l_batch_size 32   #脚本执行命令

5. 还有一些可能出现的其他错误

执行了上述代码,你可能会运行成功也可能不会。如果你遇到下面问题可以这样解决。

错误一:

解决方法:没有就设置一下,所以:一行一行的输入下面的命令

$  export NCCL_P2P_DISABLE="1"
$  export NCCL_IB_DISABLE="1"

错误二:会遇到一些库没有安装。类似上面datasets的错误。安装就好啦!!实在不会写命令可以求助gpt相关。

6. 查看结果

        一直到现在我都没有和你说过结果存在哪里的。我们仔细看一下执行脚本的这条命令,现在我们拆开来看。

$ python run_glue.py 
--model_name_or_path google-bert/bert-base-cased 
--task_name $TAS                                                                                    K_NAME --do_eval 
--output_dir ~/transformers_outputs/mrpc_eval/ 
--per_device_eva l_batch_size 32  

        注意看第四行,--output_dir这里就设置了输出路径的。可以看一下我这里设置的是:~/transformers_outputs/mrpc_eval/ =/home/用户名/transformers_outputs/mrpc_eval/下面。你也可以根据自己的情况设置。哦对不用提前新建目录,他会自动生成的。想查看结果点进目录查看即可。

成功截图

三. 未来展望

接下来我将更新,transformer代码的详解,可以期待一下o!!!

### 实现 Vision Transformer 模型复现教程 #### 安装依赖环境 为了在 Ubuntu 22.04 上成功复现 Vision Transformer (ViT) 模型,需先配置好 Python 和必要的库。推荐使用 Anaconda 或 Miniconda 来管理虚拟环境。 创建并激活一个新的 conda 虚拟环境: ```bash conda create -n vit_env python=3.9 conda activate vit_env ``` 安装 PyTorch 及其他必需的包: ```bash pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113 pip install img2dataset -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn[^1] ``` #### 获取源码与预训练模型 克隆 MiniGPT-4 仓库来获取 ViT 的实现及相关资源: ```bash git clone https://github.com/Vision-CAIR/MiniGPT-4.git cd MiniGPT-4 ``` 确保检出特定版本以匹配实验条件: ```bash git checkout 22d8888ca2cf0aac862f537e7d22ef5830036808 ``` 下载预训练权重文件以便快速启动微调或评估过程。 #### 准备数据集 利用 `img2dataset` 库简化图像数据集的收集工作流程。此工具支持多种来源的数据抓取,并能高效处理大规模图片集合。 #### 编写训练脚本 基于官方提供的模板编写自定义训练循环。对于 Vision Transformer 特定部分,注意调整超参数如学习率、批次大小等以适应具体应用场景需求。 示例代码片段展示如何初始化一个简单的 ViT 架构实例: ```python from transformers import ViTForImageClassification, ViTFeatureExtractor model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224') feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-base-patch16-224') ``` #### 测试与验证 完成上述步骤后,在测试集上运行预测函数检验模型性能。如果一切正常,则说明已经成功搭建起一套完整的 ViT 开发环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值