Skip to content

[CI]add workflow yml #2

[CI]add workflow yml

[CI]add workflow yml #2

Workflow file for this run

name: Unittest GPU CI
on:
push:
branches: [develop, release/*]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true
env:
PR_ID: ${{ github.event.pull_request.number }}
COMMIT_ID: ${{ github.event.pull_request.head.sha }}
work_dir: /workspace/PaddleNLP
PADDLENLP_ROOT: /workspace/PaddleNLP
TASK: paddlenlp-CI-${{ github.event.pull_request.number }}-unit-gpu
ci_scripts: /workspace/PaddleNLP/scripts/unit_test
BRANCH: ${{ github.event.pull_request.base.ref }}
AGILE_COMPILE_BRANCH: ${{ github.event.pull_request.base.ref }}
CI_name: unit-gpu-ci
no_proxy: "localhost,bj.bcebos.com,su.bcebos.com,bcebos.com,apiin.im.baidu.com,gitee.com,aliyun.com,.baidu.com,.tuna.tsinghua.edu.cn"
HF_ENDPOINT: https://hf-mirror.com
STUDIO_GIT_HOST: http://git.prod.idc-to-cloud.aistudio.baidu-int.com
PPNLP_HOME: /ssd1/paddlenlp
NLP_DIR: /workspace/PaddleNLP
HF_DATASETS_CACHE: /ssd1/paddlenlp/huggingface/datasets
TRANSFORMERS_CACHE: /ssd1/paddlenlp/huggingface
defaults:
run:
shell: bash
jobs:
unittest-gpu-ci:
name: unittest-gpu-ci
runs-on: [self-hosted, 4gpu]
steps:
- name: Download Code
env:
work_dir: ${{ github.workspace }}
run: |
sudo rm -rf * .[^.]*
echo "Downloading PaddleNLP.tar.gz"
wget -q --no-proxy https://paddle-qa.bj.bcebos.com/CodeSync/develop/PaddleNLP.tar --no-check-certificate
echo "Extracting PaddleNLP.tar.gz"
tar xf PaddleNLP.tar && rm -rf PaddleNLP.tar
# wget -q --no-proxy https://paddle-qa.bj.bcebos.com/paddlenlp/Bos.zip --no-check-certificate
# unzip -P "$(cat ${{ github.workspace }}/../../../bos_key)" Bos.zip
# mkdir paddlenlp && mv Bos/* ./paddlenlp/
source ${{ github.workspace }}/../../../proxy
cd PaddleNLP
git config --global user.name "PaddleCI"
git config --global user.email "paddle_ci@example.com"
git pull
git submodule update --init --recursive --force
git fetch origin pull/${PR_ID}/head
git checkout -b PR_${PR_ID} FETCH_HEAD
git remote add upstream https://github.com/PaddlePaddle/PaddleNLP.git
git fetch upstream ${BRANCH}
git merge ${BRANCH}
git diff --numstat ${BRANCH} |awk '{print $NF}'
git log --pretty=oneline -10
- name: Parse GPU ID From Runner Label
id: parse-gpu
run: |
echo "Runner labels: $MACHINE_TAG"
if [[ "$MACHINE_TAG" == *"gpu-0-3"* ]]; then
echo "cudaid=0,1,2,3" >> ${{ github.env }}
elif [[ "$MACHINE_TAG" == *"gpu-4-7"* ]]; then
echo "cudaid=4,5,6,7" >> ${{ github.env }}
else
echo "Unknown runner label, fallback to default CUDA"
echo "cudaid=0,1,2,3" >> ${{ github.env }}
fi
- name: Check Docker Image And Run Container
env:
CACHE_DIR: /home/data/cfs/.cache
FLAGS_dynamic_static_unified_comm: "True"
python_version: "3.10"
paddle_whl: https://paddle-qa.bj.bcebos.com/paddle-pipeline/Develop-GpuSome-LinuxCentos-Gcc82-Cuda118-Cudnn86-Trt85-Py310-CINN-Compile/latest/paddlepaddle_gpu-0.0.0-cp310-cp310-linux_x86_64.whl
run: |
container_name=${TASK}-${core_index}-$(date +%Y%m%d-%H%M%S)
echo "container_name=${container_name}" >> ${{ github.env }}
docker_image=iregistry.baidu-int.com/paddlecloud/base-images:paddlecloud-ubuntu18.04-gcc8.2-cuda11.8-cudnn8.6-nccl2.15.5-20250311
nvidia-docker run -d -t --name ${container_name} --net=host -v /dev/shm:/dev/shm --shm-size=32G \
-v ${{ github.workspace }}/../../..:${{ github.workspace }}/../../.. \
-v ${{ github.workspace }}:/workspace \
-v /home/.cache/pip:/home/.cache/pip \
-v /ssd1/paddlenlp:/ssd1/paddlenlp \
-e BRANCH \
-e AGILE_COMPILE_BRANCH \
-e PR_ID \
-e COMMIT_ID \
-e work_dir \
-e PADDLENLP_ROOT \
-e ci_scripts \
-e no_proxy \
-e CI_name \
-e paddle_whl \
-e FLAGS_dynamic_static_unified_comm \
-e python_version \
-e CUDA_VISIBLE_DEVICES=${{ env.cudaid }} \
-w /workspace --runtime=nvidia ${docker_image}
- name: Test
env:
work_dir: ${{ github.workspace }}
run: |
docker exec -t ${{ env.container_name }} /bin/bash -c '
ldconfig
unlink /usr/bin/python3
ln -sf $(which python${python_version}) /usr/bin/python3
python -m pip install bce-python-sdk==0.8.74
pip config set global.cache-dir "/home/.cache/pip"
echo "[global]
timeout = 60
index = https://pip.baidu-int.com/search/
index-url = https://pip.baidu-int.com/simple/
trusted-host = pip.baidu-int.com" > /etc/pip.conf
'
docker exec -t ${{ env.container_name }} /bin/bash -c '
ldconfig
set -e
cd /workspace/PaddleNLP && git config --global --add safe.directory $PWD
timeout 50m bash scripts/unit_test/ci_unit.sh ${paddle_whl}
'
- name: Upload Allure-reports & Logs
if: always()
env:
home_path: ${{ github.workspace }}/..
bos_file: ${{ github.workspace }}/../bos/BosClient.py
allure_file: ${{ github.workspace }}/../allure-2.19.0
run: |
docker exec -t ${{ env.container_name }} /bin/bash -c '
if [ ! -f "${{ env.bos_file }}" ]; then
wget -q --no-proxy -O ${{ env.home_path }}/bos_new.tar.gz https://xly-devops.bj.bcebos.com/home/bos_new.tar.gz --no-check-certificate
mkdir ${{ env.home_path }}/bos
tar xf ${{ env.home_path }}/bos_new.tar.gz -C ${{ env.home_path }}/bos
fi
if [ ! -f "${{ env.allure_file }}" ]; then
wget -q --no-proxy -O ${{ env.home_path }}/allure-2.19.0.zip https://xly-devops.bj.bcebos.com/tools/allure-2.19.0.zip --no-check-certificate
unzip ${{ env.home_path }}/allure-2.19.0.zip
fi
cd /workspace/PaddleNLP/unittest_logs
for FILE in /workspace/PaddleNLP/unittest_logs/*; do
file=$(basename "$FILE")
python ${{ env.bos_file }} $file paddle-github-action/PR/PaddleNLP/unit-gpu/${PR_ID}/${COMMIT_ID}/logs
echo "$file: https://paddle-github-action.bj.bcebos.com/PR/PaddleNLP/unit-gpu/${PR_ID}/${COMMIT_ID}/logs/$file"
done
cd /workspace/PaddleNLP/
${{ env.allure_file }}/bin/allure generate result -o report
tar -czf products.tar.gz report unittest_logs
python ${{ env.bos_file }} products.tar.gz paddle-github-action/PR/PaddleNLP/unit-gpu/${PR_ID}/${COMMIT_ID}/logs
echo "products: https://paddle-github-action.bj.bcebos.com/PR/PaddleNLP/unit-gpu/${PR_ID}/${COMMIT_ID}/logs/products.tar.gz"
'
- name: Terminate And Delete the Container
if: always()
run: |
docker rm -f ${{ env.container_name }}
upload-products:
name: upload-products
needs: [unittest-gpu-ci]
if: always()
runs-on: ubuntu-latest
steps:
- name: Wget Files
if: always()
run: |
wget -q --no-proxy https://paddle-github-action.bj.bcebos.com/PR/PaddleNLP/unit-gpu/${PR_ID}/${COMMIT_ID}/logs/products.tar.gz --no-check-certificate
tar -xzf products.tar.gz
- name: Upload Allure Report
if: always()
uses: actions/upload-artifact@v4
with:
name: allure-report
path: report
if-no-files-found: ignore
- name: Upload Logs
if: always()
uses: actions/upload-artifact@v4
with:
name: unittest-gpu-ci-log
path: |
unittest_logs
if-no-files-found: ignore