코랩 대안 런팟(RunPod) 사용방법
구글 코랩을 사용하다가 비용 부담이 되어 좀 더 저렴한 런팟을 사용해본 과정을 기록했습니다. 추후 더 사용해보며 글을 업데이트할 예정입니다.
2024. 9. 16 최초작성
2024. 9. 16 SSH를 사용한 접속
2024. 9. 17 Visual Studio Code를 사용한 접속
런팟 간단히 사용해보기
SSH를 사용한 접속
Visual Studio Code를 사용한 접속
영상이 편하신분은 유튜브 영상을 보세요. SSH를 사용한 접속과 Visual Studio Code를 사용한 접속은 포스트를 참고하셔야 합니다.
런팟 간단히 사용해보기
1. 회원 가입을 먼저 해야 합니다. 다음 주소에 접속하여 화면 중앙에 보이는 Get started를 클릭하거나 화면 오른쪽 위에 보이는 Sign up을 클릭합니다.
2. Continue with Google을 클릭하면 구글 계정으로 쉽게 가입이 가능합니다.
이메일로 가입하고 싶으면 그 아래 보이는 Email address와 Password에 이메일 주소와 패스워드를 입력 후, CONTINUE를 클릭합니다.
저는 구글 계정으로 진행했습니다.
3. 런팟 가입에 사용할 구글 계정을 선택합니다.
4. 계속을 선택합니다.
5. I have read..을 체크하고 그아래 Subscribe는 체크 안해도 됩니다. Agree를 클릭합니다.
6. 런팟을 사용할 준비가 완료되었습니다. 결제 수단을 등록해야 합니다. 왼쪽 메뉴에서 Billing를 클릭합니다.
Pay with Card를 클릭하여 진행해봅니다. 결제 금액은 디폴트 금액인 50 달러로 했습니다.
카드 정보를 입력 후, 결제 버튼을 클릭합니다. 원클릭 체크 아웃을 위해…옆에 보이는 체크 박스를 클릭하면 카드 정보를 저장할 수 있네요.
결제가 완료되었습니다. Deploy a Pod을 클릭하여 바로 이동해도 되지만 Billing을 클릭하여 결제내역을 확인해봅니다.
50달러가 충전되었네요.
7. 이제 간단한 코드를 실행해봅니다. 왼쪽 메뉴에서 Pods를 선택합니다.
8. 왼쪽 상단에 보이는 Deploy를 클릭합니다.
9. GPU 팟에서 하나 고릅니다. 런팟에선 생성한 머신(?)을 팟이라고 부르나 봅니다. 상단에 Secure Cloud라고 적힌 것을 클릭하면 Community Cloud로도 바꿀 수 있습니다.
보안이 필요하면 Secure Cloud에서 고르고 보안이 필요없으면 Community Cloud에서 선택하면 됩니다.
Community Cloud가 더 저렴합니다. 아래 스크린샷에서 하나만 비교해보면 Secure Cloud는 H100 SXM이 시간당 3.49달러인 반면 Community Cloud에는 H100 SXM이 시간당 2.99달러입니다.
Secure Cloud입니다. 스크린샷에 보이는 것 외에도 더 많습니다. 아래로 스크롤하면 더 많이 있습니다.
Community Cloud입니다. 스크린샷에 보이는 것 외에도 더 많습니다. 아래로 스크롤하면 더 많이 있습니다.
Community Cloud에서 현재 선택가능한 것중 가장 저렴한 RTX A2000을 선택해봅니다.
상단에 현재 선택한 팟은 파이토치 2.1과 CUDA 11.8이 설치되어 있는 우분투 22.04라고 나오네요.
사용할 GPU 개수를 그냥 1로 두고
간단한 코드를 테스트할 거니 On Demand 대신에 더 저렴한 Spot을 선택해봅니다. Spot의 경우엔 끊길 가능성이 있나본데 정말 간단한걸 실행해볼꺼라서 상관없습니다.
현재 선택한 팟은 SSH 터미널 접근이 허용되지 않지만 좀 더 비싼 팟을 선택하면 가능할 거라고 보이네요. 참고한 링크에선 SSH 접속을 시도하고 있습니다.
Start Jupyter Notebook이 체크되어 있네요. 이렇게 하면 바로 주피터 노트북을 실행할 수 있나봅니다.
그 아래쪽에 시간당 비용이 나오는데 GPU 사용료 외에 디스크 사용료도 받는 군요.
Exited Disk Cost가 있는 것으로 봐선 팟을 종료시켜도 코드를 저장해두어도 사용료를 받나 봅니다.
메모리는 35기가 사용가능하고 디스크는 40기가 사용가능하군요.
아래쪽에 보이는 Deploy Spot 버튼을 클릭해봅니다.
10. 팟이 생성되었습니다. 이젠 왼쪽 메뉴에서 Pods를 클릭하면 지금 생성한 팟이 보이게 되네요.
생성한
현재 실행중이라 오른쪽에 연두색으로 Running이 보입니다. 오른쪽에 보이는 보라색 동그라미를 클릭합니다.
좀 더 정보가 보입니다. 이제 접속해봅니다. 왼쪽 아래보이는 Connect 버튼을 클릭합니다.
Connect to Jupyter Lab을 클릭해봅니다. SSH 접속도 되나본데 SCP, SFTP가 안되면 파일을 어떻게 옮겨야 하나 싶군요.
현재 실행중인 웹브라우저에서 주피터 노트북이 실행됩니다. Notebook 항목에서 Python3를 선택해봅니다.
주피터 노트북에서 실행이 잘되네요. 일단 지금은 이것만 해봅니다. 사용료 나올지 몰라 테스트 후, 왼쪽 탐색기에서 현재 노트북을 삭제했습니다.
왼쪽 아래 보이는 스탑 버튼을 클릭하여 팟을 중지시켜 봅니다.
팟을 중지시켜 놓아도 디스크 사용료를 받는 다는 것이 보이네요.
왼쪽 아래 보이는 휴지통 아이콘을 클릭하여 팟까지 삭제해버렸습니다.
일단 이렇게 간단히 사용해봤습니다. 나중에 다시 해보며 글을 수정해야 겠군요,
SSH를 사용한 접속
1. 다음처럼 ed25519 key pair를 생성합니다.
% ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/webnautes/.ssh/id_ed25519): 키를 저장할 위치로 엔터를 누르면 괄호안에 표시된 위치에 저장됩니다.
이미 생성했다면 다음처럼 보입니다. y를 입력후 엔터를 누릅니다.
/Users/webnautes/.ssh/id_ed25519 already exists.
Overwrite (y/n)?
Enter passphrase (empty for no passphrase): 암호가 필요해야 합니다. 입력한 암호가 보이지 않으니 입력 후 엔터를 누르면 됩니다.
Enter same passphrase again: 앞에서 입력한 것과 똑같이 입력합니다.
키가 저장된 위치와 관련 정보가 출력됩니다.
Your identification has been saved in /Users/webnautes/.ssh/id_ed25519
Your public key has been saved in /Users/webnautes/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:KFyTfq610VSYXxZOKmvz8JAI+HzmY
webnautes@webnautesui-MacBookAir.local
The key's randomart image is:
+--[ED25519 256]--+
| .+++. |
| + =+.. B |
| . o E. o..+.|
| * . ..o+|
| o o +o.|
| . . .+o|
+----[SHA256]-----+
2. 생성된 public key를 확인합니다. 위 출력 결과에서 확장자가 pub인 파일의 내용을 다음처럼 출력하여 내용을 복사합니다.
% cat ~/.ssh/id_ed25519.pub
3. 런팟 사이트의 왼쪽에 보이는 메뉴에서 Settings를 선택합니다.
보이는 항목중에 SSH Public Keys를 클릭합니다.
앞에서 복사했던 SSH public key를 붙여넣기하고 Update Public Key를 클릭합니다.
테스트 삼아 하는거니 가장 저렴한 것으로 Community Cloud에서 팟을 생성합니다. Secure Cloud로는 SSH 접속이 잘 진행이 안되서 나중에 다시 해보려고 합니다.
테스트 삼아 하는 거니 저렴한 Spot을 선택합니다. 지금 보니 SSH Terminal Access가 체크되어 있습니다. Deploy Sopt을 클릭합니다.
잠시 설정이 완료되기를 기다린후 Connect 버튼을 클릭합니다.
SSH over exposed TCP 항목에 있는 명령어를 복사합니다. SCP나 SFTP를 사용해 파일을 업로드해줘야 하니 이것으로 하는게 맞는듯합니다.
우선 터미널에서 현재 위치에 파이썬 코드 파일 하나를 생성합니다.
% echo "print('hello')" > hello.py
다음 처럼 현재 위치에 hello.py 파일이 생성되었습니다.
% pwd
/Users/webnautes
% ls hello.py
hello.py
% cat hello.py
print('hello')
터미널에서 복사한 명령을 실행합니다.
% ssh root@194.26.196.170 -p 23074 -i ~/.ssh/id_ed25519
The authenticity of host '[194.26.196.170]:23074 ([194.26.196.170]:23074)' can't be established.
ED25519 key fingerprint is SHA256:8PoeZX9Tpcxs7anL8Zk.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes yes 입력 후 엔터를 누릅니다.
Warning: Permanently added '[194.26.196.170]:23074' (ED25519) to the list of known hosts.
Enter passphrase for key '/Users/webnautes/.ssh/id_ed25519': 앞에서 설정했던 암호 입력 후 엔터를 누릅니다. 입력중인 암호는 보이지않습니다.
접속된 우분투 정보가 보입니다.
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 6.8.0-40-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
______ ______ _
(_____ \ (_____ \ | |
_____) ) _ _ ____ _____) )___ __| |
| __ / | | | || _ \ | ____// _ \ / _ |
| | \ \ | |_| || | | || | | |_| |( (_| |
|_| |_||____/ |_| |_||_| \___/ \____|
For detailed documentation and guides, please visit:
https://docs.runpod.io/ and https://blog.runpod.io/
root@a3576e45647e:~#
로컬 터미널에서 실행하여 원격 접속한 팟에 앞에서 생성했던 hello.py 파일을 업로드합니다.
다음 명령은 앞에서 Connect 버튼 클릭시 보였던 다음 명령을 참고하여 조합했습니다.
ssh root@194.26.196.170 -p 23074 -i ~/.ssh/id_ed25519
% scp -i ~/.ssh/id_ed25519 -P 23074 /Users/webnautes/hello.py root@194.26.196.170:~
Enter passphrase for key '/Users/webnautes/.ssh/id_ed25519': 앞에서 설정했던 암호 입력후 엔터를 누릅니다.
hello.py 100% 15 0.0KB/s 00:00 파일이 업로드 됩니다.
%
이제 원격 접속했던 팟에 접속한 터미널에서 확인해봅니다. hello.py 파일이 보입니다.
root@a3576e45647e:~# ls
hello.py
이제 실행해봅니다. 잘되네요.
root@a3576e45647e:~# python hello.py
hello
이제 exit 명령으로 접속을 종료합니다.
root@a3576e45647e:~# exit
logout
Connection to 194.26.196.170 closed.
%
이제 Visual Studio Code로 접속하는 걸 해봐야 겠군요.
사용안할 땐 팟을 중지시키는걸 까먹지 마세요. 가급적 팟을 삭제도 해두고요
Visual Studio Code를 사용한 접속
1. 앞에서 설명한 SSH를 사용한 접속을 진행한 후, 해야 합니다. Community Cloud에서 팟을 하나 생성했습니다.
Connect를 클릭한 후, SSH를 사용한 접속 명령어를 복사합니다.
반드시 SSH over exposed TCP 항목에 있는 명령어를 복사해야 합니다. 해당 항목이 보이지 않으면 팟을 다른 GPU를 사용하여 다시 생성하세요.
2. Visual Studio Code에서 Remove Development 확장을 설치해야 합니다.
3.ctrl+shift+p를 누른후(맥에서는 command+shift+p) Remote-SSH: Connect to Host를 선택합니다.
Add new SSH Host를 선택합니다.
앞에서 복사했던 명령어를 붙여넣고 엔터를 누릅니다.
엔터를 누릅니다.
오른쪽아래에 Host가 추가되었다고 보입니다.
4. ctrl+shift+p를 누른후(맥에서는 command+shift+p) Remote-SSH: Connect to Host를 선택합니다.
앞에서 복사한 명령어에 있는 IP 주소를 선택합니다.
엔터를 누릅니다.
암호를 입력합니다.
터미널에서 접속 과정을 보여주는데 잠시 기다리면 됩니다.
5. 이제 파일을 생성하여 실행시켜 봅니다. 왼쪽에서 탐색기를 클릭 후, Open Folder를 선택합니다.
폴더를 새로 생성할 수 있는 방법이 제공되지 않네요. 그냥 현재 위치에서 ok를 클릭합니다.
Yes를 클릭합니다.
탐색기에 현재 접속한 원격 머신의 root 디렉토리가 보입니다. 새파일 아이콘을 클릭한 후, hello.py 입력 후 엔터를 누릅니다.
hello.py가 탐색기에 추가되면서 오른쪽에 hello.py 파일이 열렸습니다.
Python 확장을 설치해야 합니다. Install을 클릭합니다.
확장 설치되기를 잠시 기다리다가 hello.py 파일을 열어보면 오른쪽 아래에 Python이 보이게 됩니다. 원격이라 그런지 확장 설치 완료되었다는 게 바로 확인 안되네요.
간단한 코드를 입력 후, 오른쪽 위에 있는 실행 버튼을 클릭합니다.
터미널창에서 실행 결과를 볼 수 있습니다.
이제 Visual Studio Code로 접속하는 걸 완료했습니다. 이제 LLM을 돌려봐야 겠군요.
사용안할 땐 팟을 중지시키는걸 까먹지 마세요. 가급적 팟을 삭제도 해두고요
참고
https://jiogenes.github.io/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C/2023/11/08/runpod-1.html
https://blog.runpod.io/how-to-set-up-terminal-access-on-runpod/?ref=blog.runpod.io
https://blog.runpod.io/how-to-connect-vscode-to-runpod/