서버컴에서, 학습 한방에 돌리는 shell script

About_work·2023년 10월 12일
0

딥러닝 환경 구축

목록 보기
7/23

TODOLIST

  • gpu가 n대 인 경우, 실험을 항상 새 브랜치에서 해서 귀찮음.

알고리즘

  • $GPU_IDX 가 1이면, DATASET_PATH = "dataset_1"

사용법

  • ./nl_navigation.sh [target_branch] [note] [gpu_idx]
  • ./nl_navigation.sh dev test 0
  • note와 gpu_idx는 모두 optional 입니다!

개인 pc용

#!/bin/bash

## usage: ./nl_navigation.sh {target branch name} {NAMESPACE} {GPU_IDX}
## usage: ./nl_navigation.sh test/udafc-true 11290954 0


# $1: target branch name
TARGET_BRANCH=$1 # e.g. test/udafc-true
# $TARGET_BRANCH: change "/" to "_"
WORKSPACE=${TARGET_BRANCH//\//_} # e.g. test_udafc-true


# $2: NAMESPACE (optional)
if [ -z "$2" ]; then
    NAMESPACE="note" # default namespace
else
    # namespace as note_ with $2
    NAMESPACE="note_$2"  # e.g. note_11290954
fi


# $3: GPU_IDX
# Check if GPU_IDX is provided, if not, default to 0.
if [ -z "$3" ]; then
    GPU_IDX=0 # default GPU_IDX
else
    GPU_IDX=$3 # e.g. 0
fi

DATASET_PATH="dataset"
# Add GPU_IDX to DATASET_PATH
DATASET_PATH="${DATASET_PATH}_${GPU_IDX}" # e.g. dataset_0

# PORT is used for nlrl2. It should be different for each GPU_IDX.
PORT=10001
# Add GPU_IDX to PORT
PORT=$((PORT+GPU_IDX)) # e.g. 10001 + 0 = 10001

# 디렉토리 변경
cd ~/PycharmProjects/nl_navigation/nl_navigation
source ~/anaconda3/etc/profile.d/conda.sh
conda activate nl_navigation
conda info --envs
git config --global credential.helper store
git stash

# target_branch가 로컬에 존재하는지 확인
BRANCH_EXISTS=$(git branch --list $TARGET_BRANCH)

if [ "$BRANCH_EXISTS" ]; then
    # 브랜치가 로컬에 존재하면, 해당 브랜치로 삭제 후, pull 받기
    echo "Switching to $TARGET_BRANCH"
    git checkout dev
    git branch -d $TARGET_BRANCH
    git fetch origin $TARGET_BRANCH
    git checkout $TARGET_BRANCH
else
    # 브랜치가 로컬에 존재하지 않으면, 원격 저장소로부터 최신 버전 받아온 후 해당 브랜치로 체크아웃
    echo "Creating and switching to $TARGET_BRANCH from origin/$TARGET_BRANCH"
    git fetch origin $TARGET_BRANCH
    git checkout $TARGET_BRANCH
fi

# python3 실행
# usage: ./nl_navigation.sh test/udafc-true 11290954 0
echo  "python3 launch_rl_training.py --gpu_idx $GPU_IDX --workspace $WORKSPACE --namespace $NAMESPACE --dataset_path $DATASET_PATH --port $PORT"
python3 launch_rl_training.py --gpu_idx $GPU_IDX --workspace $WORKSPACE --namespace $NAMESPACE --dataset_path $DATASET_PATH --port $PORT

공용 서버 용

#!/bin/bash

## usage: ./nl_navigation.sh {target branch name} {NAMESPACE} {GPU_IDX}
## usage: ./nl_navigation.sh test/udafc-true 11290954 0


# $1: target branch name
TARGET_BRANCH=$1 # e.g. test/udafc-true
# $TARGET_BRANCH: change "/" to "_"
WORKSPACE=${TARGET_BRANCH//\//_} # e.g. test_udafc-true


# $2: NAMESPACE (optional)
if [ -z "$2" ]; then
    NAMESPACE="note" # default namespace
else
    # namespace as note_ with $2
    NAMESPACE="note_$2"  # e.g. note_11290954
fi


# $3: GPU_IDX
# Check if GPU_IDX is provided, if not, default to 0.
if [ -z "$3" ]; then
    GPU_IDX=0 # default GPU_IDX
else
    GPU_IDX=$3 # e.g. 0
fi

DATASET_PATH="dataset"
# Add GPU_IDX to DATASET_PATH
DATASET_PATH="${DATASET_PATH}_${GPU_IDX}" # e.g. dataset_0

# PORT is used for nlrl2. It should be different for each GPU_IDX.
PORT=10001
# Add GPU_IDX to PORT
PORT=$((PORT+GPU_IDX)) # e.g. 10001 + 0 = 10001

# 디렉토리 변경
cd /shared_storage/hsb/nl_navigation
# virtualenv 활성화
source nl_navigation/bin/activate
cd /shared_storage/hsb/nl_navigation/nl_navigation
# Git에서 사용하는 자격 증명(credential) 저장 방식을 설정하는 명령어입니다.
# 이 명령어는 Git이 사용자의 자격 증명(예: 사용자 이름과 비밀번호)을
# 로컬 컴퓨터에 평문으로 저장하도록 지시합니다.
# 이 설정을 사용하면 Git 리포지토리에 접근할 때마다 사용자 이름과 비밀번호를 입력할 필요가 없습니다.
# 대신, 첫 번째 로그인 때 입력한 자격 증명이 평문으로 저장되어 자동으로 사용됩니다.
git config --global credential.helper store
git stash

# target_branch가 로컬에 존재하는지 확인
BRANCH_EXISTS=$(git branch --list $TARGET_BRANCH)

if [ "$BRANCH_EXISTS" ]; then
    # 브랜치가 로컬에 존재하면, 해당 브랜치로 삭제 후, pull 받기
    echo "Switching to $TARGET_BRANCH"
    git checkout dev
    git branch -d $TARGET_BRANCH
    git fetch origin $TARGET_BRANCH
    git checkout $TARGET_BRANCH
else
    # 브랜치가 로컬에 존재하지 않으면, 원격 저장소로부터 최신 버전 받아온 후 해당 브랜치로 체크아웃
    echo "Creating and switching to $TARGET_BRANCH from origin/$TARGET_BRANCH"
    git fetch origin $TARGET_BRANCH
    git checkout $TARGET_BRANCH
fi

# python3 실행
# usage: ./nl_navigation.sh test/udafc-true 11290954 0
echo  "python3 launch_rl_training.py --gpu_idx $GPU_IDX --workspace $WORKSPACE --namespace $NAMESPACE --dataset_path $DATASET_PATH --port $PORT"
python3 launch_rl_training.py --gpu_idx $GPU_IDX --workspace $WORKSPACE --namespace $NAMESPACE --dataset_path $DATASET_PATH --port $PORT
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글