NLP文本分类task1 docker安装与答案提交

本文详细介绍了NLP中文预训练模型的泛化能力挑战赛,包括训练环境配置(PyTorch 1.6.0和1.7.1,CUDA 10.2和11.2),数据下载与处理,模型训练与验证,预测结果生成,Docker镜像创建与提交。参赛者可以通过修改损失函数、模型结构、数据清洗、文本增强等方式提升模型性能,并利用Chinese-BERT或RoBERTa等预训练模型进一步优化。
部署运行你感兴趣的模型镜像

比赛全流程体验

NLP中文预训练模型泛化能力挑战赛

训练环境介绍

机器信息:NVIDIA-SMI 440.33.01 Driver Version: 440.33.01 CUDA Version: 10.2
pytorch 版本 1.6.0

机器信息:NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2
pytorch 版本 1.7.1
python依赖:

pip install transformers
Docker安装(Ubutun)

命令行安装:

sudo apt install docker.io
验证:

docker info

运行过程

下载Bert全权重,下载 https://huggingface.co/bert-base-chinese/tree/main 下载config.json vocab.txt pytorch_model.bin,把这三个文件放进tianchi-multi-task-nlp/bert_pretrain_model文件夹下。

下载比赛数据集,把三个数据集分别放进 tianchi-multi-task-nlp/tianchi_datasets/数据集名字/ 下面:

OCEMOTION/total.csv: http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/OCEMOTION_train1128.csv
OCEMOTION/test.csv: http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/b/ocemotion_test_B.csv
TNEWS/total.csv: http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/TNEWS_train1128.csv
TNEWS/test.csv: http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/b/tnews_test_B.csv
OCNLI/total.csv: http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/OCNLI_train1128.csv
OCNLI/test.csv: http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531841/b/ocnli_test_B.csv
文件目录样例:

tianchi-multi-task-nlp/tianchi_datasets/OCNLI/total.csv
tianchi-multi-task-nlp/tianchi_datasets/OCNLI/test.csv
分开训练集和验证集,默认验证集是各3000条数据,参数可以自己修改:
python ./generate_data.py
训练模型,一个epoch:
python ./train.py
会保存验证集上平均f1分数最高的模型到 ./saved_best.pt

用训练好的模型 ./saved_best.pt 生成结果:
python ./inference.py
打包预测结果。
zip -r ./result.zip ./*.json
生成Docker并进行提交,参考:https://tianchi.aliyun.com/competition/entrance/231759/tab/174
创建云端镜像仓库:https://cr.console.aliyun.com/
创建命名空间和镜像仓库;
然后切换到submission文件夹下,执行下面命令;

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

sudo docker login --username=xxx@mail.com registry.cn-hangzhou.aliyuncs.com

使用本地Dockefile进行构建,使用创建仓库的【公网地址】

如 docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .

docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .
输出构建过程:

Sending build context to Docker daemon 18.94kB
Step 1/4 : FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3
—> a4cc999cf2aa
Step 2/4 : ADD . /
—> Using cache
—> b18fbb4425ef
Step 3/4 : WORKDIR /
—> Using cache
—> f5fcc4ca5eca
Step 4/4 : CMD [“sh”, “run.sh”]
—> Using cache
—> ed0c4b0e545f
Successfully built ed0c4b0e545f

ed0c4b0e545f 为镜像id,上面构建过程最后一行

sudo docker tag ed0c4b0e545f registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0

提交镜像到云端

docker push registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0
比赛提交页面,填写镜像路径+版本号,以及用户名和密码则可以完成提交。
比赛改进思路

修改 calculate_loss.py 改变loss的计算方式,从平衡子任务难度以及各子任务类别样本不均匀入手;
修改 net.py 改变模型的结构,加入attention层,或者其他层;
使用 cleanlab 等工具对训练文本进行清洗;
做文本数据增强,或者在预训练时候用其他数据集pretrain;
对训练好的模型再在完整数据集(包括验证集和训练集)上用小的学习率训练一个epoch;
调整bathSize和a_step,变更梯度累计的程度,当前是batchSize=16,a_step=16;
用 chinese-roberta-wwm-ext 作为预训练模型;

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

需求响应动态冰蓄冷系统需求响应策略的优化研究(Matlab代码实现)内容概要:本文围绕“需求响应动态冰蓄冷系统需求响应策略的优化研究”展开,基于Matlab代码实现,重点探讨了冰蓄冷系统在电力需求响应背景下的动态建模优化调度策略。研究结合实际电力负荷电价信号,构建系统能耗模型,利用优化算法对冰蓄冷系统的运行策略进行求解,旨在降低用电成本、平衡电网负荷,并提升能源利用效率。文中还提及该研究为博士论文复现,涉及系统建模、优化算法应用仿真验证等关键技术环节,配套提供了完整的Matlab代码资源。; 适合人群:具备一定电力系统、能源管理或优化算法基础,从事科研或工程应用的研究生、高校教师及企业研发人员,尤其适合开展需求响应、综合能源系统优化等相关课题研究的人员。; 使用场景及目标:①复现博士论文中的冰蓄冷系统需求响应优化模型;②学习Matlab在能源系统建模优化中的具体实现方法;③掌握需求响应策略的设计思路仿真验证流程,服务于科研项目、论文写作或实际工程方案设计。; 阅读建议:建议结合提供的Matlab代码逐模块分析,重点关注系统建模逻辑优化算法的实现细节,按文档目录顺序系统学习,并尝试调整参数进行仿真对比,以深入理解不同需求响应策略的效果差异。
综合能源系统零碳优化调度研究(Matlab代码实现)内容概要:本文围绕“综合能源系统零碳优化调度研究”,提供了基于Matlab代码实现的完整解决方案,重点探讨了在高比例可再生能源接入背景下,如何通过优化调度实现零碳排放目标。文中涉及多种先进优化算法(如改进遗传算法、粒子群优化、ADMM等)在综合能源系统中的应用,涵盖风光场景生成、储能配置、需求响应、微电网协同调度等多个关键技术环节,并结合具体案例(如压缩空气储能、光热电站、P2G技术等)进行建模仿真分析,展示了从问题建模、算法设计到结果验证的全流程实现过程。; 适合人群:具备一定电力系统、能源系统或优化理论基础,熟悉Matlab/Simulink编程,从事新能源、智能电网、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展综合能源系统低碳/零碳调度的科研建模算法开发;②复现高水平期刊(如SCI/EI)论文中的优化模型仿真结果;③学习如何将智能优化算法(如遗传算法、灰狼优化、ADMM等)应用于实际能源系统调度问题;④掌握Matlab在能源系统仿真优化中的典型应用方法。; 阅读建议:建议结合文中提供的Matlab代码网盘资源,边学习理论模型边动手调试程序,重点关注不同优化算法在调度模型中的实现细节参数设置,同时可扩展应用于自身研究课题中,提升科研效率模型精度。
<think>我们将在Ubuntu 24.04上使用Docker部署text-embedding-inference(TEI)服务,并加载bge-rerank-v2-m3模型。由于TEI是一个高性能的文本嵌入推理服务,支持多种模型,包括BGE系列。 步骤概览: 1. 确保系统满足要求:Ubuntu 24.04,已安装NVIDIA驱动、Docker和NVIDIA Container Toolkit。 2. 安装必要的工具(如果尚未安装)。 3. 编写Docker启动脚本,配置TEI服务,指定模型为`BAAI/bge-rerank-v2-m3`。 4. 创建并运行.sh脚本。 详细步骤: ### 1. 系统要求 - 已安装NVIDIA驱动程序(建议使用最新版本) - 已安装Docker Engine - 已安装NVIDIA Container Toolkit(使Docker支持GPU) 如果尚未安装NVIDIA Container Toolkit,请按照以下步骤安装: ```bash # 添加包仓库 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list # 安装nvidia-container-toolkit sudo apt-get update sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker ``` ### 2. 拉取text-embedding-inference Docker镜像 TEI提供了预构建的Docker镜像。我们可以使用官方镜像。 ```bash docker pull ghcr.io/huggingface/text-embeddings-inference:latest ``` 注意:由于模型较大,请确保有足够的磁盘空间。 ### 3. 编写启动脚本 我们将创建一个启动脚本(例如`start_tei.sh`),其中包含运行Docker容器的命令。 参数说明: - `-e MODEL_ID=BAAI/bge-rerank-v2-m3`:指定模型 - `-p 8080:80`:将容器内的80端口映射到主机的8080端口 - `--gpus all`:使用所有可用的GPU 由于bge-rerank-v2-m3是一个reranker模型,我们使用TEI的Rerank任务类型。但注意,TEI默认可能不支持rerank任务,因此我们需要确认镜像版本是否支持。目前,TEI支持embedding和rerank任务,并且对于rerank任务,我们需要设置环境变量`TASK=rerank`。 因此,我们在启动容器时设置环境变量: - `TASK=rerank` - `MODEL_ID=BAAI/bge-rerank-v2-m3` 创建脚本`start_tei.sh`: ```bash #!/bin/bash # 停止并删除已存在的同名容器(如果存在) docker stop tei_rerank >/dev/null 2>&1 docker rm tei_rerank >/dev/null 2>&1 # 启动容器 docker run -d \ --name tei_rerank \ --gpus all \ -p 8080:80 \ -e TASK=rerank \ -e MODEL_ID=BAAI/bge-rerank-v2-m3 \ ghcr.io/huggingface/text-embeddings-inference:latest ``` 注意:如果模型在本地已经下载,可以使用卷挂载的方式避免每次下载。例如,将本地模型目录挂载到容器内的`/opt/model`,并设置环境变量`MODEL_DIR=/opt/model`。但这里我们让容器自动下载模型。 ### 4. 运行脚本 赋予脚本执行权限并运行: ```bash chmod +x start_tei.sh ./start_tei.sh ``` ### 5. 验证服务 服务启动后,可以通过发送请求来验证: ```bash curl -X POST http://localhost:8080/rerank \ -H "Content-Type: application/json" \ -d '{ "query": "What is Deep Learning?", "texts": [ "Deep Learning is a subset of Machine Learning.", "Machine Learning is a subset of AI." ] }' ``` 应该会返回两个文本的排序得分。 ### 注意事项 1. 首次启动会下载模型,可能需要较长时间(模型大小约2GB)。 2. 确保主机有足够的GPU内存(bge-rerank-v2-m3模型对显存要求不高,但具体取决于输入大小)。 3. 如果需要使用其他模型,替换`MODEL_ID`即可。 如果遇到问题,可以查看容器日志: ```bash docker logs tei_rerank ``` 希望这个脚本能帮助您在Ubuntu 24.04上成功部署。 §§相关问题§§ 1. 如何优化text-embedding-inference服务的性能? 2. 如何使用Docker Compose部署text-embedding-inference服务? 3. 如何将模型预先下载到本地,避免每次启动容器时重新下载?</think>以下是在Ubuntu 24.04上使用Docker部署text-embedding-inference服务并加载bge-rerank-v2-m3模型的完整解决方案: ### 准备工作 1. **系统要求**: - Ubuntu 24.04 - NVIDIA GPU(推荐≥8GB显存) - Docker 20.10+ - NVIDIA Container Toolkit 2. **安装依赖**: ```bash # 安装NVIDIA驱动和CUDA sudo apt install -y nvidia-driver-535 cuda-12.3 # 安装Docker sudo apt install -y docker.io sudo usermod -aG docker $USER && newgrp docker # 安装NVIDIA Container Toolkit curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add - distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list sudo apt update && sudo apt install -y nvidia-container-toolkit sudo systemctl restart docker ``` ### 部署脚本 创建`launch_tei.sh`脚本: ```bash #!/bin/bash # 配置参数 MODEL_NAME="BAAI/bge-rerank-v2-m3" PORT=8080 GPU_MEMORY="4GB" # 根据GPU调整 # 检查GPU可用性 if ! nvidia-smi &> /dev/null; then echo "错误: 未检测到可用GPU,请检查驱动安装" exit 1 fi # 拉取最新推理镜像 docker pull ghcr.io/huggingface/text-embeddings-inference:1.2 # 启动容器 docker run -d --gpus all \ -p $PORT:80 \ -e MODEL_ID=$MODEL_NAME \ -e MAX_CLIENT_BATCH_SIZE=32 \ -e MAX_BATCH_TOKENS=16000 \ -e NUM_WORKERS=1 \ --shm-size 1g \ --name tei_rerank \ ghcr.io/huggingface/text-embeddings-inference:1.2 # 检查服务状态 echo "等待服务启动(约2分钟)..." sleep 120 if docker logs tei_rerank | grep -q "Application startup complete"; then echo "✅ 服务已成功启动" echo "访问端点: http://localhost:$PORT/rerank" else echo "❌ 服务启动失败,请检查日志: docker logs tei_rerank" fi ``` ### 使用说明 1. **启动服务**: ```bash chmod +x launch_tei.sh ./launch_tei.sh ``` 2. **测试API**: ```bash curl -X POST http://localhost:8080/rerank \ -H "Content-Type: application/json" \ -d '{ "query": "人工智能发展", "texts": [ "深度学习是机器学习的分支", "自然语言处理处理人类语言技术", "强化学习关注决策过程优化" ] }' ``` 3. **预期响应**: ```json [ {"index":0,"score":0.81567}, {"index":1,"score":0.74231}, {"index":2,"score":0.61245} ] ``` ### 关键配置说明 1. **GPU资源**: - 推荐显存:≥4GB - 调整参数:`--gpus '"device=0,1"'` 指定GPU设备 2. **性能优化**: ```bash -e MAX_CONCURRENT_REQUESTS=128 \ # 最大并发请求 -e MAX_BATCH_SIZE=64 \ # 最大批处理量 ``` 3. **模型管理**: - 首次运行自动下载模型(约2.3GB) - 本地缓存路径:`~/.cache/huggingface/hub` ### 常见问题解决 1. **GPU内存不足**: ```bash docker stop tei_rerank docker run ... -e GPU_MEMORY_LIMIT="2GB" ... ``` 2. **端口冲突**: ```bash docker run -p 8081:80 ... ``` 3. **模型加载失败**: ```bash docker exec -it tei_rerank rm -rf /data/models docker restart tei_rerank ``` > 注意:首次启动时模型下载可能需要10-15分钟,具体取决于网络速度[^1]。建议使用高速网络或预先下载模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值