!pip install colab_ssh --upgrade
from colab_ssh import launch_ssh_cloudflared, init_git_cloudflared
launch_ssh_cloudflared(password="test")
최근 diffusion + RL 관련 paper들을 읽으며 코드를 돌려봐야 할 일이 생겼다.
강화학습 환경을 구축하려면 docker를 사용해야 편하고 정신건강에 좋다고 하는데 기존에 쓰던 A6000 서버는 sudo 권한이 없어서 여러모로 어려움이 많았다. docker를 쓰지 않고 colab(pro)과 vscode를 연동해서, 패키지들을 하나씩 설치했는데, 그 과정을 적어보려한다.
우선 코랩에서 아래 코드를 통해 구글 드라이브를 연동하고 colab ssh 실행한다.
## in colab
# 구글 드라이브 마운트
from google.colab import drive
drive.mount('/content/drive')
# vscode 연결
!pip install colab_ssh --upgrade
from colab_ssh import launch_ssh_cloudflared, init_git_cloudflared
launch_ssh_cloudflared(password="test") # 서버 접속 시 필요한 비밀번호
그리고 colab의 ssh config 파일로 가서 아래와 같은 양식으로 서버 접속 config들을 입력해준다.

그리고 서버에 접속 후 미리 입력해둔 password(위 코드에서의 "test")를 입력해주면 vscode에서 정상적으로 구글 드라이브 폴더로 들어갈 수 있다.
이제 본격적으로 실험하고 싶은 논문의 코드를 불러와보자.
내가 돌리려고 하는 논문의 제목은 Planning with Diffusion for Flexible Behavior Synthesis이고, 이 논문에 대한 설명은 추후에 따로 포스팅 할 예정이다.
git clone https://github.com/jannerm/diffuser 를 통해 google drive 내에 해당 레포를 불러와준다.
google drive에 불러오는 이유는 colab을 vscode에 연동하였을 경우, 접속이 끊어지면 작업한 내용들이 다 사라지기 때문이다.
이를 해결하기 위해서는 1. 깃허브에 따로 private repo를 만들어 작업하는 내용을 계속 commit해주거나 2. google drive에서 작업하면 된다. (google drive 용량만 충분하다면 2가 훨씬 좋은 방법인 것 같아, 2로 진행하였다.)
우선 바로 학습시키는 명령어인 "python scripts/train.py --dataset halfcheetah-medium-expert-v2"를 터미널에서 실행해보면 아래와 같은 오류가 뜬다.

해당 오류는 diffuser 라는 폴더를 python에서 import 할 때, 아직 절대 경로를 참고하지 못해서 (diffuser 폴더가 존재함에도) No module named 'diffuser' 오류가 나타나는 것이다.
절대 경로를 참고하는 코드는 아래와 같다.
import sys, os
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))
오류가 뜨는 python 파일의 가장 상단에 위 코드를 입력해주면 diffuser 폴더를 잘 import 할 수 있다.
그런 다음은 아직 "requirements.txt"등의 필요 라이브러리를 설치해주지 않았으므로 필요 라이브러리를 설치해준다.
본 레포를 돌리기 위해 내가 설치한 라이브러리들은 다음과 같다.
tap
einops
typed-argument-parser
gitpython
mujoco-py==2.1.2.14
(+ pip install git+https://github.com/Farama-Foundation/d4rl@f2a05c0d66722499bf8031b094d9af3aea7c372b#egg=d4rl)
위 라이브러리들도 다 설치해주고 나면 이제 mujoco-py 폴더를 불러와야한다.
또한 레포 내에 있는 diffuser/utils/config.py의 import collections를 import collections.abc로 바꿔줘야 하는데, 파이썬 3.10.12을 쓰는 코랩에서만 바꿔주면 된다.(이전 버전이면 상관 없음)
이제 다시 명령어를 실행해주면 이런 오류가 나올 것이다.
Exception:
You appear to be missing MuJoCo. We expected to find the file here: /root/.mujoco/mujoco210
This package only provides python bindings, the library must be installed separately.
Please follow the instructions on the README to install MuJoCo
https://github.com/openai/mujoco-py#install-mujoco
오류의 의미는 /root/.mujoco에 mujoco210 폴더 및 내부 파일들이 있어야하는데 없다는 의미이다.
우선 mujoco210파일을 만들어주기 위해 아래 레포에 가서 linux용 mujoco 압축 파일("mujoco210-linux-x86_64.tar.gz")을 설치해준다.
https://github.com/openai/mujoco-py#install-mujoco
GitHub - openai/mujoco-py: MuJoCo is a physics engine for detailed, efficient rigid body simulations with contacts. mujoco-py al
MuJoCo is a physics engine for detailed, efficient rigid body simulations with contacts. mujoco-py allows using MuJoCo from Python 3. - GitHub - openai/mujoco-py: MuJoCo is a physics engine for det...
github.com
그리고 diffuser 레포 안에 해당 폴더를 넣고 터미널에 아래 명령어를 차례대로 입력해준다.
tar -zxvf /content/drive/MyDrive/diffuser/mujoco210-linux-x86_64.tar.gz # 압축파일(.tar.gz) 압축풀기
mv /content/drive/MyDrive/diffuser/mujoco210 /root/.mujoco/ # mujoco210 폴더를 /root/.mujoco210으로 이동
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/.mujoco/mujoco210/bin # /root/.mujoco ~ 경로 추가
그리고 아래 패키지를 설치해준다. (시간이 조금 걸린다.)
pip install "cython<3"
sudo apt-get install libosmesa6-dev
sudo apt-get install patchelf
pip install sk-video
pip install gym==0.17.2
그리고 다시 명령어(python scripts/train.py --dataset halfcheetah-medium-expert-v2)를 실행해주면!
정상적으로 학습이 진행된다.

* rendering 오류 관련 : https://pytorch.org/rl/reference/generated/knowledge_base/MUJOCO_INSTALLATION.html
Working with MuJoCo-based environments — torchrl main documentation
Working with MuJoCo-based environments From its official repository, MuJoCo stands for Multi-Joint dynamics with Contact. It is a general purpose physics engine that aims to facilitate research and development in robotics, biomechanics, graphics and animat
pytorch.org
'기타 > 개발 환경 설정' 카테고리의 다른 글
파이썬 특정 함수 뜯어보기 (inspect 라이브러리) (1) | 2024.09.01 |
---|---|
[vscode] vscode + jupyter 파이썬 커널 경로 설정 (0) | 2024.04.03 |
[논문 편하게 읽자] arxiv2notion+ 설치 과정 및 사용 방법 (0) | 2022.11.18 |
[우분투] wsl에서 파이썬 버전 바꾸기 (2.7.18 → 3.10) (1) | 2022.10.05 |
python 주피터 노트북 화면 어둡게 하는 방법 + 문장 줄 번호 추가 (0) | 2022.03.04 |
댓글