Hermes Agent 또는 OpenClaw를 사용하여 클라우드 GPU 임대하기
요약
본 가이드는 봇(Agent)이 CPU 서버에서 실행되더라도 필요에 따라 클라우드 GPU 자원을 임대하여 복잡한 작업을 수행하는 방법을 설명합니다. Hermes Agent나 OpenClaw 같은 관리형 에이전트를 사용하여 Vast.ai와 연동하면, 봇은 필요한 사양의 GPU를 검색하고 임대하며, 작업 완료 후 안전하게 해제할 수 있습니다.
핵심 포인트
- 에이전트가 클라우드 GPU 자원을 동적으로 임대하여 사용합니다.
- Vast.ai와의 통합을 통해 실제 GPU 환경에서 작업을 수행할 수 있습니다.
- 작업 완료 후 인스턴스를 파괴하고 키를 제거하는 과정이 중요합니다.
사용자의 봇은 CPU 서버에서 실행되지만, 작업에 GPU가 필요할 경우 이를 임대할 수 있습니다. 비용을 견적하고, 사용자의 계정으로 Vast.ai 머신을 임대한 다음, SSH를 통해 작업을 수행하고 파일을 가져온 후 머신을 해제합니다. 관리형 Hermes Agent와 OpenClaw 모두 동일한 단계를 거칩니다.
저는 이 가이드에서 설명하는 관리형 봇들을 호스팅하는 OpenClaw Launch를 사용합니다.
실제 작동 방식 예시
저희는 자체 관리형 Hermes Agent로 Blender 애니메이션 영화를 제작할 때 이를 테스트했습니다. CPU로 렌더링되었던 작업이 품질 확인을 위해 풀 HD, 128 샘플 Cycles 프레임이 필요했습니다. 하나의 채팅 메시지를 통해 봇은 다음 작업을 수행했습니다:
- 최소 12 GB의 VRAM, 충분한 CPU 및 디스크, 그리고 Blender 빌드에 충분히 새로운 CUDA 드라이버를 갖춘 GPU를 가격 상한선 내에서 Vast.ai에서 검색했습니다.
- 20 GB 디스크와 이 작업을 위해 생성된 임시 SSH 키가 포함된 RTX 4060 Ti 16GB를 임대했습니다.
- Blender와 장면을 업로드하고, 각 업로드에 대해 SHA-256 해시를 확인했습니다.
- Cycles가 CPU로 폴백(fallback)하는 것이 아니라 실제로 GPU (CUDA)에서 렌더링되는지 확인했습니다.
- 1920×1080 프레임을 22.5초 만에 렌더링한 다음, 다운로드하고 파일을 확인했습니다.
- 인스턴스를 파괴하고 SSH 키를 제거했으며, 해당 인스턴스가 더 이상 존재하지 않음을 확인했습니다.
전체 임대 과정(머신 생성부터 해제까지)은 194초가 걸렸습니다. Vast는 이 인스턴스에 대해 $0.007의 요금을 부과했습니다. 그런 다음 봇은 GPU 프레임을 이전 CPU 프리뷰와 비교하여, 작업을 완료했다고 선언하기보다는 무엇이 개선되었고 무엇이 여전히 부족한지 솔직하게 알려주었습니다.
GPU는 저희 것이 아니라 사용자님의 것입니다. 사용자의 봇이 자신의 Vast.ai 계정으로 머신을 임대하며, Vast는 이를 OpenClaw Launch 플랜과는 별도로 청구합니다. 사용자의 봇 자체 컨테이너에는 GPU가 없으며, 이는 임대하고 구동하며 해제하는 컨트롤러 역할을 합니다.
작동 방식
| 구성 요소 | 역할 |
|---|---|
| 사용자 관리형 봇 | 작업을 계획하고, 파일을 준비하며, 자체 작업 공간 터미널에서 모든 단계를 실행합니다. |
| ... |
- OpenClaw Launch에서 실행 중인 관리형 Hermes Agent 또는 OpenClaw 봇.
- 크레딧이 있거나 결제 수단이 등록된 Vast.ai 계정.
- Vast.ai가 귀하의 봇에 연결되어 있어야 합니다. Vast.ai 연결 가이드를 따르세요: 이 워크플로우에서 사용되는 권한(
misc는 오퍼 검색,user_read및user_write는 잔액 및 SSH 키용,instance_read및instance_write는 임대용,billing_read는 요금 청구용)을 가진 Vast API 키를 생성한 다음 대시보드 → 통합(Dashboard → Integrations)에서 연결합니다. 이 작업은 약 2분이 걸립니다.
첫 임대를 하기 전에, 비용을 지불하지 않고도 연결 상태를 확인해 보세요:
제가 연결한 Vast.ai 계정을 사용하세요. 제 잔액을 읽고 인스턴스를 나열해 주세요. 생성하거나, 시작하거나, 중지하거나, 삭제하는 것은 하지 마세요.
1. 작업 설명 및 제한 사항 정의하기
봇에게 작업이 무엇인지, 성공으로 간주되는 것이 무엇인지, 그리고 얼마까지 지출할 의향이 있는지 알려주세요. 제한 사항이 구체적일수록 견적이 더 좋습니다. 예를 들면:
임대된 GPU에서 Blender 프로젝트의 289프레임을 1920×1080 해상도와 128 Cycles 샘플로 렌더링해 주세요. 최소 12GB의 VRAM, 20GB 디스크를 가진 단일 GPU를 사용하고 시간당 최대 $0.40을 넘지 않게 해주세요. 먼저 전체 비용을 견적하고 제 승인을 기다려 주세요. 렌더링 후에는 프레임을 다운로드하고, 검증하고, 인스턴스를 파괴하며, 추가했던 모든 SSH 키를 제거해 주세요.
작업에 필요한 VRAM이 얼마나 되는지 모른다면, 먼저 모델이나 장면으로부터 계산해 달라고 봇에게 요청하세요. VRAM, CUDA 버전, 디스크를 미리 명시하면 중간에 실패할 수 있는 저가 오퍼 대부분을 걸러낼 수 있습니다.
2. 견적 승인하기
봇은 전체 가격이 포함된 현재의 Vast 오퍼를 검색하여 특정 머신으로 돌아옵니다. 좋은 견적에는 다음 내용이 명시됩니다:
- 제공되는 offer ID, GPU 모델, VRAM 용량, 그리고 호스트가 지원하는 최대 CUDA 버전;
- 요청한 디스크 크기에 대한 시간당 가격 (Vast는 해당 견적에 스토리지를 포함하므로 두 번 추가해서는 안 됩니다);
- 업로드 및 다운로드 속도, 그리고 예상되는 데이터 전송량 추정치;
- 예상 실행 시간에 대한 총액 추정치와, 그 이후 기기를 해제할 하드 시간 제한.
Vast의 offer는 분 단위로 변경됩니다. 만약 선택한 offer가 사라지면, 봇은 다른 기계를 조용히 임대하는 대신 새로운 견적을 가지고 돌아와야 합니다. 예를 들어 _"승인됨: offer 123456, 시간당 최대 $0.40, 최대 30분."_과 같이 명확하게 승인하세요.
3. 봇이 기기를 임대하고 연결합니다
사용자가 승인하면, 봇은 일반적으로 다음 작업을 수행합니다:
- 해당 작업만을 위해 자체 워크스페이스에서 새로운 SSH 키 쌍을 생성하고, 그 공개(public) 키를 Vast에 등록합니다 (개인(private) 키는 절대 봇을 벗어나지 않습니다);
- 버전이 지정된 Docker 이미지를 사용하여 승인된 offer로 인스턴스를 생성합니다. 연결은 태그가 없거나,
latest, 또는main이미지의 경우 거부됩니다. 정확한 이미지 내용을 고정하려면, 태그 대신 이미지의sha256다이제스트를 사용하도록 봇에게 요청하세요; - SSH가 실제로 응답할 때까지 인스턴스를 확인합니다. Vast에서 '실행 중(running)' 상태라는 것이 아직 연결할 준비가 되었다는 것을 의미하지는 않습니다.
임대 호출은 봇의 터미널에서 다음과 같이 보입니다. 사용자가 직접 입력할 필요는 없으며, 봇이 사용자 대신 수행하는 작업을 보여줍니다. <PUBLIC_KEY>는 단계 1에서 봇이 생성한 공개 키를 나타냅니다:
composio execute VAST_AI_OCL_SEARCH_GPU_OFFERS_FULL '{"limit":20,"allocated_storage":20,"filters":{"gpu_ram":{"gte":12000},"num_gpus":{"eq":1},"dph_total":{"lte":0.4}}}'
composio execute VAST_AI_OCL_ADD_SSH_KEY '{"user_confirmed":true,"ssh_key":"<PUBLIC_KEY>"}'
composio execute VAST_AI_OCL_CREATE_INSTANCE '{"user_confirmed":true,"offer_id":123456,"image":"nvidia/cuda:12.8.0-runtime-ubuntu24.04","disk":20,"runtype":"ssh"}'
...
4. 봇이 작업을 실행합니다
SSH를 통해 봇은 입력값을 업로드하고, 소프트웨어를 설치하거나 압축을 풀고, 작업을 실행합니다. 실제 GPU 작업과 비용이 많이 드는 CPU 작업을 구분하는 두 가지 확인 절차가 있습니다:
- 업로드 검증: 양쪽 끝의 각 파일 해시를 비교하여 전송 중단으로 인한 손상된 작업을 수행하기 전에 업로드를 포착할 수 있습니다.
- GPU 사용 증명:
nvidia-smi를 실행하고, Blender의 경우 Cycles가 CUDA 또는 OptiX 장치를 활성화했는지 확인합니다. 드라이버와 소프트웨어의 CUDA 버전이 일치하지 않을 때 많은 도구들이 조용히 CPU로 폴백(fallback)됩니다.
5. 다운로드, 검증, 해제 (Download, verify, release)
작업이 완료되면, 봇은 scp를 사용하여 출력값을 자체 작업 공간으로 복사하고 이를 확인합니다. 그 후에야 인스턴스를 파괴(destroy)합니다:
composio execute VAST_AI_OCL_DESTROY_INSTANCE '{"user_confirmed":true,"instance_id":52500115}'
composio execute VAST_AI_OCL_LIST_INSTANCES '{}'
composio execute VAST_AI_OCL_DELETE_SSH_KEY '{"user_confirmed":true,"ssh_key_id":98765}'
작업은 이 작업의 인스턴스 ID가 더 이상 인스턴스 목록에 나타나지 않고(목록은 페이지당 25개의 임대 정보를 반환하므로, 봇은 모든 페이지를 따라야 함) 임시 SSH 키가 사라질 때만 완료됩니다. 계정의 다른 임대 정보는 그대로 유지됩니다. 그 결과물들은 봇의 작업 공간에 남아 있으며, 여기서 채팅으로 전송하거나, 게시하거나, 계속 작업을 진행할 수 있습니다.
Stop은 Release가 아닙니다. Vast 인스턴스를 중지(stopping)하면 디스크가 유지되며, Vast는 해당 스토리지에 대해 계속 요금을 청구합니다. **파괴(Destroying)**하는 것은 디스크를 삭제하고 모든 요금 청구를 종료합니다. 항상 파괴하기 전에 결과물을 다운로드하세요. Vast의 인스턴스 수명 주기를 참조하십시오.
GPU에 보내기 좋은 작업 (Jobs worth sending to a GPU)
| 작업 | 봇에게 알려줄 내용 |
|---|---|
| Blender Cycles 렌더링 | Blender 버전, 해상도, 샘플 수 및 프레임 범위. 전체 범위를 렌더링하기 전에 CUDA 또는 OptiX 장치를 확인하도록 요청하십시오. |
| ... |
비용 통제 유지 (Keep costs under control)
- 첫 메시지에서 가격 상한선(price cap)과 시간 제한을 제시하고, 둘 중 하나에 도달하거나 실패할 경우에도 자동으로 장비를 해제하도록 봇에게 요청하세요.
- 작은 규모로 먼저 테스트하세요. GPU에서 한 프레임 또는 짧은 샘플만으로도 전체 배치에 비용을 지불하기 전에 실제 속도와 비용을 알 수 있습니다.
- 실제 청구액을 확인하세요. 나중에 봇에게 해당 인스턴스 ID의 Vast 청구 내역을 읽어달라고 요청하세요. Vast는 청구 내역을 지연하여 게시하므로, 첫 번째 금액이 항상 최종 금액인 것은 아닙니다.
- 절대 임대를 맹목적으로 재시도하지 마세요.
create호출이 시간 초과되면 이미 장비가 존재할 수 있습니다. 따라서 다시 시도하기 전에 봇이 인스턴스를 목록화하도록 해야 합니다. 그래야 두 번 비용을 지불하는 상황을 막을 수 있습니다.
Hermes Agent와 OpenClaw: 동일한 단계
OpenClaw Launch에서 관리되는 Hermes Agent와 OpenClaw 봇은 동일한 Vast.ai 연결, 동일한 composio 명령어, 그리고 워크스페이스에 미리 설치된 ssh, scp, ssh-keygen을 사용합니다. 이 페이지의 모든 프롬프트와 명령어는 둘 다 변경 없이 작동합니다. Hermes Agent는 완성된 흐름(flow)을 재사용 가능한 스킬로 저장할 수도 있어, 다음 GPU 작업이 처음부터 시작하는 대신 테스트된 루틴에서 시작할 수 있습니다.
자체 호스팅 에이전트 (Self-hosted agents)
VAST_AI_OCL_ 액션은 OpenClaw Launch의 관리형 연결에 속하므로, 자체 호스팅 Hermes Agent나 OpenClaw는 이를 가지고 있지 않습니다. 동일한 워크플로우는 Vast가 제공하는 명령줄 도구와 함께 작동하며, 이 도구는 에이전트가 실행되는 위치에 설치하고 Vast API 키로 승인해야 합니다:
pip install vastai
vastai set api-key YOUR_VAST_API_KEY
vastai search offers 'gpu_ram>=12 num_gpus=1 rentable=true'
...
자체 호스팅 에이전트의 경우, vastai set api-key는 해당 장치에 키를 파일로 저장하며, 에이전트는 이 키를 사용하여 비용을 지출할 수 있습니다. 따라서 제한된 키를 제공하고 지침에 동일한 승인 및 정리 규칙을 포함시키세요.
문제 해결 (Troubleshooting)
| 문제점 | 해결 방법 |
|---|---|
| 임대 직후 SSH 연결 거부됨 | 첫 1~2분 동안은 정상입니다. 봇은 시간 제한을 두고 SSH 응답이 올 때까지 폴링(poll)해야 하며, 만약 응답이 오지 않으면 기기를 해제합니다. |
| ... |
클라우드 GPU FAQ
Hermes Agent와 OpenClaw에서 작동하나요?
네. 관리형(Managed) Hermes Agent와 OpenClaw는 동일한 Vast.ai 연결, 동일한 composio 명령어, 그리고 봇 작업 공간 내의 동일한 SSH 도구를 사용하기 때문에 이 페이지의 모든 단계가 두 플랫폼 모두에서 동일합니다. 자체 호스팅 에이전트(Self-hosted agents)는 별도의 Vast 통합이 필요합니다. 자체 호스팅 섹션을 참고하세요.
OpenClaw Launch가 GPU를 제공하나요?
아니요. 봇 자체가 CPU 서버에서 실행됩니다. GPU는 사용자의 개별 Vast 계정으로 Vast.ai로부터 임대되며, OpenClaw Launch 플랜과는 별도로 Vast에 의해 청구됩니다. 봇이 임대, 설정, 실행 및 정리 작업을 대신 수행합니다.
GPU 작업 비용은 얼마인가요?
GPU 종류, 실행 시간, 할당하는 디스크 용량, 이동하는 데이터 양에 따라 다릅니다. 자체 테스트에서 RTX 4060 Ti 16GB를 사용한 1080p Blender Cycles 프레임 하나는 임대부터 해제까지 약 3분 15초가 걸렸으며, Vast는 이에 대해 $0.007을 청구했습니다. 가격은 끊임없이 변하므로, 임대하기 전에 항상 봇에게 현재 제공되는 오퍼에 대한 견적을 요청하세요.
제가 요청하지 않아도 봇이 GPU를 임대할 수 있나요?
OpenClaw Launch에서 발생하는 모든 유료 Vast 액션은 봇이 명시적으로 사용자로부터 확인(confirmed) 표시를 하지 않으면 실행되지 않습니다. 그리고 액션 설명에는 봇에게 특정 오퍼와 비용을 승인한 후에만 그렇게 하도록 지시합니다. 봇이 스스로 이 플래그를 설정하므로, 사용자의 지침이 실제 제어 장치입니다: 예산을 지정하고 무언가를 생성하기 전에 사용자 승인을 기다리라고 지시하세요. 잔액(balances), 오퍼(offers) 및 인스턴스 목록을 읽는 것은 절대 임대를 하지 않습니다.
작업이 중간에 실패하면 어떻게 되나요?
봇에게 실패 시뿐만 아니라 성공 시에도 머신을 해제하도록 요청하고, 사전에 하드 타임 리밋(hard time limit)을 설정하세요. 중지된 Vast 인스턴스는 여전히 스토리지 비용이 청구되므로, 렌탈은 해당 인스턴스가 파괴되어 더 이상 인스턴스 목록의 어떤 페이지에도 나타나지 않을 때만 완전히 종료됩니다.
관련 가이드
- Hermes 및 OpenClaw를 Vast.ai에 연결하기
- Blender MCP 서버
- Hermes Agent + ComfyUI
- Hermes Agent + vLLM
- Faster Whisper 전사(transcription)
- 관리형 Hermes Agent 호스팅
에이전트에게 GPU 제공하기
Integrations에서 Vast.ai를 연결한 다음, 봇에게 첫 번째 GPU 작업에 대한 견적을 요청하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기