Transformers之环境安装_安装 transformers,Linux运维程序员架构之路该如何继续学习


#### 自定义dockerfile


自定义安装,主要是为了在docker中使用conda虚拟环境。



https://docs.nvidia.com/deeplearning/frameworks/pytorch-release-notes/rel-23-11.html#rel-23-11

FROM nvcr.io/nvidia/pytorch:23.11-py3
LABEL maintainer=“transformers”

ARG DEBIAN_FRONTEND=noninteractive

ARG PYTORCH=‘2.1.0’

Example: cu102, cu113, etc.

ARG CUDA=‘cu121’

RUN apt-get update &&
apt-get install -y libaio-dev wget bzip2 ca-certificates curl git git-lfs unzip mlocate usbutils
vim tmux g++ gcc build-essential cmake checkinstall lsb-release &&
rm -rf /var/lib/apt/lists/* &&
apt-get clean

RUN python3 -m pip uninstall -y torch torchvision torchaudio torch-tensorrt transformer-engine apex

SHELL [“/bin/bash”, “–login”, “-c”]

RUN cd / && wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O /miniconda.sh &&
/bin/bash /miniconda.sh -b -p /opt/conda &&
ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh &&
echo “. /opt/conda/etc/profile.d/conda.sh” >> ~/.bashrc &&
/bin/bash -c “source ~/.bashrc” &&
/opt/conda/bin/conda update -n base -c defaults conda -y &&
/opt/conda/bin/conda config --set ssl_verify no &&
/opt/conda/bin/conda config --add channels conda-forge &&
/opt/conda/bin/conda create -n ai python=3.10

ENV PATH $PATH:/opt/conda/envs/ai/bin

RUN conda init bash &&
echo “conda activate ai” >> ~/.bashrc &&
conda activate ai &&
pip install --upgrade pip -i https://mirror.baidu.com/pypi/simple &&\
pip config set global.index-url https://mirror.baidu.com/pypi/simple &&\

Install latest release PyTorch

(PyTorch must be installed before pre-compiling any DeepSpeed c++/cuda ops.)

(https://www.deepspeed.ai/tutorials/advanced-install/#pre-install-deepspeed-ops)

pip install --no-cache-dir -U torch==$PYTORCH torchvision torchaudio \
--extra-index-url https://download.pytorch.org/whl/$CUDA &&\ 
pip install -U numpy opencv-python onnx onnxoptimizer onnxruntime -i https://mirror.baidu.com/pypi/simple

ARG REF=main

RUN conda activate ai &&
cd &&
git clone https://github.com/huggingface/transformers && cd transformers && git checkout $REF &&
cd … &&
pip install --no-cache-dir ./transformers[deepspeed-testing] &&
pip install --no-cache-dir git+https://github.com/huggingface/accelerate@main#egg=accelerate &&\

recompile apex

# pip uninstall -y apex &&\

RUN git clone https://github.com/NVIDIA/apex

MAX_JOBS=1 disables parallel building to avoid cpu memory OOM when building image on GitHub Action (standard) runners

TODO: check if there is alternative way to install latest apex

RUN cd apex && MAX_JOBS=1 python3 -m pip install --global-option=“–cpp_ext” --global-option=“–cuda_ext” --no-cache -v --disable-pip-version-check .

Pre-build latest DeepSpeed, so it would be ready for testing (otherwise, the 1st deepspeed test will timeout)

pip uninstall -y deepspeed

This has to be run (again) inside the GPU VMs running the tests.

The installation works here, but some tests fail, if we don’t pre-build deepspeed again in the VMs running the tests.

TODO: Find out why test fail.

RUN DS_BUILD_CPU_ADAM=1 DS_BUILD_FUSED_ADAM=1

RUN conda activate ai &&
pip install deepspeed --global-option=“build_ext”
–global-option=“-j8” --no-cache -v --disable-pip-version-check 2>&1

When installing in editable mode, transformers is not recognized as a package.

this line must be added in order for python to be aware of transformers.

RUN conda activate ai &&
cd &&
cd transformers && python3 setup.py develop

The base image ships with pydantic==1.8.2 which is not working - i.e. the next command fails

RUN conda activate ai &&
pip install -U --no-cache-dir “pydantic<2”

RUN conda activate ai &&
python3 -c “from deepspeed.launcher.runner import main”

RUN apt-get update &&
rm -rf /var/lib/apt/lists/* &&
apt-get clean


### 缓存设置


预训练模型会被下载并本地缓存到 `~/.cache/huggingface/hub`。这是由环境变量 `TRANSFORMERS_CACHE` 指定的默认目录。在 Windows 上,默认目录为 `C:\Users\username\.cache\huggingface\hub`。你可以按照不同优先级改变下述环境变量,以指定不同的缓存目录。


1. 环境变量(默认): `HUGGINGFACE_HUB_CACHE` 或 `TRANSFORMERS_CACHE`。
2. 环境变量 `HF_HOME`。
3. 环境变量 `XDG_CACHE_HOME` + `/huggingface`。


除非你明确指定了环境变量 `TRANSFORMERS_CACHE`,🤗 Transformers 将可能会使用较早版本设置的环境变量 `PYTORCH_TRANSFORMERS_CACHE` 或 `PYTORCH_PRETRAINED_BERT_CACHE`。


### 离线模式


🤗 Transformers 可以仅使用本地文件在防火墙或离线环境中运行。设置环境变量 `TRANSFORMERS_OFFLINE=1` 以启用该行为。


通过设置环境变量 `HF_DATASETS_OFFLINE=1` 将 [🤗 Datasets]( ) 添加至你的离线训练工作流程中。


例如,你通常会使用以下命令对外部实例进行防火墙保护的的普通网络上运行程序:



python examples/pytorch/translation/run_translation.py --model_name_or_path google-t5/t5-small --dataset_name wmt16 --dataset_config ro-en …


在离线环境中运行相同的程序:



HF_DATASETS_OFFLINE=1 TRANSFORMERS_OFFLINE=1
python examples/pytorch/translation/run_translation.py --model_name_or_path google-t5/t5-small --dataset_name wmt16 --dataset_config ro-en …


现在脚本可以应该正常运行,而无需挂起或等待超时,因为它知道只应查找本地文件。


#### 获取离线时使用的模型和分词器


另一种离线时使用 🤗 Transformers 的方法是预先下载好文件,然后在需要离线使用时指向它们的离线路径。有三种实现的方法:


* 单击 [Model Hub]( ) 用户界面上的 ↓ 图标下载文件。
* 使用 [`PreTrainedModel.from_pretrained`] 和 [`PreTrainedModel.save_pretrained`] 工作流程:


	1. 预先使用 [`PreTrainedModel.from_pretrained`] 下载文件:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

tokenizer = AutoTokenizer.from_pretrained(“bigscience/T0_3B”)
model = AutoModelForSeq2SeqLM.from_pretrained(“bigscience/T0_3B”)


	2. 使用 [`PreTrainedModel.save_pretrained`] 将文件保存至指定目录:

tokenizer.save_pretrained(“./your/path/bigscience_t0”)
model.save_pretrained(“./your/path/bigscience_t0”)


	3. 现在,你可以在离线时从指定目录使用 [`PreTrainedModel.from_pretrained`] 重新加载你的文件:

tokenizer = AutoTokenizer.from_pretrained(“./your/path/bigscience_t0”)
model = AutoModel.from_pretrained(“./your/path/bigscience_t0”)

* 使用代码用 [huggingface\_hub]( ) 库下载文件:


	1. 在你的虚拟环境中安装 `huggingface_hub` 库:

python -m pip install huggingface_hub


	2. 使用 [`hf_hub_download`]( ) 函数将文件下载到指定路径。例如,以下命令将 `config.json` 文件从 [T0]( ) 模型下载至你想要的路径:

from huggingface_hub import hf_hub_download

hf_hub_download(repo_id=“bigscience/T0_3B”, filename=“config.json”, cache_dir=“./your/path/bigscience_t0”)



下载完文件并在本地缓存后,指定其本地路径以加载和使用该模型:





**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/56e3bcad9d04ab2bc4ea2d20a4b861cd.png)
![img](https://img-blog.csdnimg.cn/img_convert/586ec728bfaa9c5e825ec62bb29aa29f.png)
![img](https://img-blog.csdnimg.cn/img_convert/b7456aafebe71642c740d972bc1cc0b6.png)
![img](https://img-blog.csdnimg.cn/img_convert/2e4d1670b845287dd1f6af141f8f59e1.png)
![img](https://img-blog.csdnimg.cn/img_convert/91b0920f055bdbee6cb9fd6b7c24445a.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)**
![img](https://img-blog.csdnimg.cn/img_convert/c1cce76225e8c5211a0c8592c7530dbd.jpeg)



为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**

![](https://img-blog.csdnimg.cn/img_convert/863834faf2c6d1474e0a131a511fee3e.png)

本份面试集锦涵盖了

*   **174 道运维工程师面试题**
*   **128道k8s面试题**
*   **108道shell脚本面试题**
*   **200道Linux面试题**
*   **51道docker面试题**
*   **35道Jenkis面试题**
*   **78道MongoDB面试题**
*   **17道ansible面试题**
*   **60道dubbo面试题**
*   **53道kafka面试**
*   **18道mysql面试题**
*   **40道nginx面试题**
*   **77道redis面试题**
*   **28道zookeeper**

**总计 1000+ 道面试题, 内容 又全含金量又高**

*   **174道运维工程师面试题**

> 1、什么是运维?

> 2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

> 3、现在给你三百台服务器,你怎么对他们进行管理?

> 4、简述raid0 raid1raid5二种工作模式的工作原理及特点

> 5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

> 6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

> 7、Tomcat和Resin有什么区别,工作中你怎么选择?

> 8、什么是中间件?什么是jdk?

> 9、讲述一下Tomcat8005、8009、8080三个端口的含义?

> 10、什么叫CDN?

> 11、什么叫网站灰度发布?

> 12、简述DNS进行域名解析的过程?

> 13、RabbitMQ是什么东西?

> 14、讲一下Keepalived的工作原理?

> 15、讲述一下LVS三种模式的工作过程?

> 16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

> 17、如何重置mysql root密码?

[**一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

**AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**

迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

**AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算**

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值