콘텐츠로 이동

워커를 통한 노드 격리 (Node Isolation with Workers)

특정 라이브러리는 무거운 의존성(예: PyTorch, CUDA, Diffusers)을 가지거나 서로 충돌하는 Python 패키지 버전을 요구할 수 있습니다. Griptape Nodes는 워커 서브프로세스를 통해 라이브러리를 격리 실행하는 기능을 지원합니다.

동작 방식

  • 각 격리된 라이브러리는 자체 독립적인 Python 가상 환경(venv)에서 실행되는 별도의 워커 프로세스를 갖습니다.
  • 메인 엔진과 워커 프로세스는 IPC(프로세스 간 통신)를 통해 데이터를 교환합니다.
  • 한 라이브러리의 충돌이나 크래시가 메인 엔진 전체에 영향을 주지 않습니다.

실행 의존성 선언 방법 (How to declare execution dependencies)

두 의존성 집합은 모두 griptape-nodes-library.json의 metadata.dependencies 아래에 있습니다.

  • pip_dependencies: 노드 모듈을 가져오고 노드를 생성하는 데 필요한 의존성입니다. 라이브러리 venv(<library>/.venv)에 설치되며 오케스트레이터가 사용합니다.
  • pip_dependencies_exec: process에만 필요한 의존성입니다. <library>/.venv-exec에 설치되며, 워커에서만 sys.path에 포함됩니다.
{
    "name": "My Library",
    "library_schema_version": "0.14.0",
    "metadata": {
        "author": "<Your Name>",
        "description": "<Description>",
        "library_version": "0.1.0",
        "engine_version": "0.85.0",
        "tags": ["AI", "Custom"],
        "dependencies": {
            "pip_dependencies": [
                "pillow==11.0.0"
            ],
            "pip_dependencies_exec": [
                "torch==2.4.1",
                "transformers==4.45.2"
            ],
            "pip_install_flags": [
                "--extra-index-url",
                "https://download.pytorch.org/whl/cu121"
            ]
        }
    },
    "categories": [],
    "nodes": []
}