여러 가이드를 참조해 작성되었으며 MAC OS 환경에서 직접 실행하며 발생한 몇몇 에러케이스를 정리했습니다.
참조한 가이드 문서: 링크1 / 링크2
공식 Gensyn 노드 레포지토리: 링크
하이퍼볼릭 홈페이지에서 회원가입.
hyperbolic 인스턴스 접속을 위한 로컬 ssh 키 생성
ssh-keygen
아래 명령어를 통해 나온 public 키 복사 후,
cat ~/.ssh/id_rsa.pub
# 또는
cat ~/.ssh/id_ed25519.pub
Hyperbolic → Settings에 복사한 public key를 붙여넣고 저장
크레딧 충전 (5$) 후 Rental GPU 리스트에서 가격이 낮은 GPU 선택(RTX 4090 또는 H100 권장)
GPU count: 1
/ Docker image: pytorch/pytorch:latest
로 설정
GPU가 준비 완료되면, 인스턴스에 접속할 수 있는 ssh 명령어를 복사(아래는 예시)
ssh ubuntu@subdued-koala-pig.1.cricket.hyperbolic.xyz -p 31423
로컬 터미널에서, 위의 명령어 뒤에 -L 3000:localhost:3000
를 붙여서 인스턴스 접속
ssh ubuntu@subdued-koala-pig.1.cricket.hyperbolic.xyz -p 31423 -L 3000:localhost:3000
→ Gensyn userData 생성 시 웹 대시보드 접속을 위한 포트포워딩
1. Update System Packages
sudo apt-get update && sudo apt-get upgrade -y
2. Install General Utilities and Tools
sudo apt install screen curl iptables build-essential git wget lz4 jq make gcc nano automake autoconf tmux htop nvme-cli libgbm1 pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y
3. Install Python
sudo apt-get install python3 python3-pip python3-venv python3-dev -y
4. Install Node
sudo apt-get update
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v
sudo npm install -g yarn
yarn -v
5. Install Yarn
curl -o- -L https://yarnpkg.com/install.sh | bash
export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
source ~/.bashrc
git clone https://github.com/gensyn-ai/rl-swarm/
백그라운드 실행을 위해
screen -S swarm
rl-swarm
디렉토리 진입
cd rl-swarm
실행
python3 -m venv .venv
source .venv/bin/activate
./run_rl_swarm.sh
터미널에
Waiting for userData.json to be created...
메시지가 나타나면,
로컬 브라우저에서 http://localhost:3000/
접속 후 Gensyn 이메일 로그인
A100 or H100 의 경우 Math hard (B) 선택 후 → 파라미터 선택 (7B, 32B or 72B), 기타 RTX 3090 or 4090의 경우 Math (A) 선택 후 → 파라미터 선택 (0.5B or 1.5B)
중간에 huggingface에 공유할거냐 묻는데, 선택사항이라 N 입력
실행 중 에러 발생시 아래 에러케이스 참조
Node ID와 Node Name은 노드 실행 중간중간에 나타나며,
Node ID는 Qm으로 시작, Node Name은 동물 이름 세가지로 구성
필요 시 터미널에서 스크롤백 모드 진입 후 스크롤해서 찾기
Ctrl-A + [ #스크롤백 모드 진입
Q # 스크롤백 모드 나가기
https://t.me/gensyntrackbot (텔레그램 봇)에서 /check node-id
실행, node-id는 앞에서 찾은 Node ID로 대체
만약 0x00000000 이런식으로 EVM 주소가 제대로 연결되지 않았다면, 전체 프로세스를 새로운 이메일로 다시 시작해야합니다.
만약 정상적으로 일반적인 EVM 주소가 보인다면, swarm.pem
백업 진행
swarm.pem
은 생성된 Gensyn EVM address의 private key를 담고 있기 때문에, 유출에 주의
백그라운드에서 실행을 유지한 채로 screen으로부터 detach
Ctrl + A, D
swarm.pem
을 hyperbolic 인스턴스의 root 경로로 복사 후 로컬로 복사
cp ./swarm.pem ~/swarm.pem
scp -P 31423 ubuntu@subdued-koala-pig.1.cricket.hyperbolic.xyz:~/swarm.pem ~/Downloads/
31423
와 ubuntu@subdued-koala~
부분은 앞서서 hyperbolic 인스턴스에 접속했을 때 사용했던 명령어의 포트번호와 호스트네임으로 교체해서 사용하면되며, ~/Downloads
대신 원하는 로컬 경로로 복사해도 됩니다.
일정 시간 학습 후, 아래의 홈페이지에서 자신의 Node ID / Name 검색을 통해 기여도를 확인할 수 있습니다.
https://dashboard-math-hard.gensyn.ai/ (math hard)
https://dashboard-math.gensyn.ai/ (math)
여기에 존재하지 않는 에러케이스는 공식 깃허브 이슈 혹은 공식 디스코드를 참조하세요. rl-swarm 버전 업데이트마다 수많은 에러케이스가 발생하는 것으로 보입니다..ㅜㅜ
프로세스 종료
Ctrl + C
파일 수정
nano modal-login/app/page.tsx
내용 전부 삭제(Ctrl+K
) 후, 아래 코드 붙여넣기
"use client";
import {
useAuthModal,
useLogout,
useSigner,
useSignerStatus,
useUser,
} from "@account-kit/react";
import { useEffect, useState } from "react";
export default function Home() {
const user = useUser();
const { openAuthModal } = useAuthModal();
const signerStatus = useSignerStatus();
const { logout } = useLogout();
const signer = useSigner();
const [createdApiKey, setCreatedApiKey] = useState(false);
useEffect(() => {
if (!user && createdApiKey) setCreatedApiKey(false);
if (!user || !signer || !signerStatus.isConnected || createdApiKey) return;
const submitStamp = async () => {
const whoamiStamp = await signer.inner.stampWhoami();
const resp = await fetch("/api/get-api-key", {
method: "POST",
body: JSON.stringify({ whoamiStamp }),
});
return (await resp.json()) as { publicKey: string };
};
const createApiKey = async (publicKey: string) => {
await signer.inner.experimental_createApiKey({
name: `server-signer-${Date.now()}`,
publicKey,
expirationSec: 60 * 60 * 24 * 62,
});
};
const handleAll = async () => {
try {
const { publicKey } = await submitStamp();
await createApiKey(publicKey);
await fetch("/api/set-api-key-activated", {
method: "POST",
body: JSON.stringify({ orgId: user.orgId, apiKey: publicKey }),
});
setCreatedApiKey(true);
} catch (err) {
console.error(err);
alert("Something went wrong. Please check the console.");
}
};
handleAll();
}, [createdApiKey, signer, signerStatus.isConnected, user]);
useEffect(() => {
if (typeof window === "undefined") return;
try {
if (typeof window.crypto.subtle !== "object")
throw new Error("Crypto API not available");
} catch {
alert("Please use HTTPS or localhost.");
}
}, []);
useEffect(() => {
if (!user && !signerStatus.isInitializing) openAuthModal();
}, [user, signerStatus.isInitializing]);
return (
<main className="flex min-h-screen flex-col items-center gap-4 justify-center text-center">
{signerStatus.isInitializing || (user && !createdApiKey) ? (
<>Loading...</>
) : user ? (
<div className="card">
<div className="flex flex-col gap-2 p-2">
<p className="text-xl font-bold">
YOU ARE SUCCESSFULLY LOGGED IN TO THE GENSYN TESTNET
</p>
<button className="btn btn-primary mt-6" onClick={logout}>
Log out
</button>
</div>
</div>
) : (
<div className="card">
<p className="text-xl font-bold">LOGIN TO THE GENSYN TESTNET</p>
<div className="flex flex-col gap-2 p-2">
<button className="btn btn-primary mt-6" onClick={openAuthModal}>
Login
</button>
</div>
</div>
)}
</main>
);
저장 & 종료
Ctrl+O → Enter → Ctrl+X
노드 재실행
python3 -m venv .venv && \
source .venv/bin/activate && \
./run_rl_swarm.sh
transformers
패키지 다운그레이드 후 노드 재실행
pip install transformers==4.48.2
./run_rl_swarm.sh
아래와 같은 에러가 발생하는 경우,
raise ValueError("--tf32 requires Ampere or a newer GPU arch, cuda>=11 and torch>=1.7") ValueError: --tf32 requires Ampere or a newer GPU arch, cuda>=11 and torch>=1.7
config.yaml 파일 수정 (0.5b 모델 예시로, 사용 모델에 따라 0.5b, 1.5b, 7b, 32b, 72b 중 선택)
nano hivemind_exp/configs/gpu/grpo-qwen-2.5-0.5b-deepseek-r1.yaml
tf32: true
-> tf32: false
로 설정
저장 & 종료
Ctrl+O → Enter → Ctrl+X
노드 재실행
python3 -m venv .venv && \
source .venv/bin/activate && \
./run_rl_swarm.sh