← 기술 블로그 목록으로 돌아가기
#999 • Engineering Whitepaper

공교육과 국방 AI 교육을 위한 무설치(Zero-Config) 온디바이스 AI 런타임 & 800GB 모델 허브 아키텍처

초·중·고 교실, AI 디지털교과서(AIDT), 국방 교육 현장에서 터져 나오는 환경 파편화와 보안 제약을 엔지니어링으로 극복한 ZeliDesk / ZeliGen 런타임 백서.

"학교 현장과 군 교육장에는 상주하는 AI 시스템 엔지니어가 없습니다. 교사와 학생, 장병이 겪는 1%의 환경 오류는 곧 수업과 교육의 100% 중단을 의미합니다. 어떤 윈도우 컴퓨터든 클릭 한 번에 100% 자가 설치·구동되어야 하는 이유가 바로 여기에 있습니다."

1. 교육 및 공공·국방 현장의 현실: 왜 기존 오픈소스 AI는 실패하는가?

최근 초·중·고교의 AI 디지털 교과서(AIDT) 도입, 국방부의 AI 전문 교과서 및 실습 체계 구축, 천재교육 등 주요 에듀테크 기업들의 생성형 AI 교육 도입이 급물살을 타고 있습니다. 그러나 실제 일선 학교 컴퓨터실, 과학실, 군 교육장에 상용 오픈소스 AI(Stable Diffusion WebUI, ComfyUI, Ollama 등)를 설치하려 하면 시작도 하기 전에 전면 실패합니다.

현장을 가로막는 3대 기술적 장벽

  1. 폐쇄망(학내망)과 엄격한 방화벽 정책:
    대부분의 학교와 군부대는 망분리 또는 교육청 유해사이트 차단 방화벽이 작동합니다. pip install이나 git clone, Hugging Face 모델 직접 다운로드는 방화벽에 의해 패킷이 드롭되거나 무한 타임아웃을 유발합니다.
  2. 극단적인 하드웨어 파편화 (Hardware Fragmentation):
    학교 컴퓨터실의 PC는 규격화되어 있지 않습니다. 7~8년 된 인텔 내장 그래픽(iGPU) 데스크톱부터, 외장 GPU가 아예 없는 교원용 슬림 노트북, 최신 디지털 실습실에 보급된 지포스 RTX PC, 그리고 최근 납품되기 시작한 최신 RTX 50 시리즈 머신까지 한 교실 안에서도 천차만별입니다.
  3. 관리자 권한 부재와 윈도우 보안 정책 (AppLocker & HVCI):
    학생용 PC는 C:\Program Files나 레지스트리 쓰기 권한이 철저히 제한되어 있습니다. 시스템 전역에 파이썬을 설치하거나 환경변수(PATH)를 영구 등록하는 행위 자체가 불가능합니다.

ZeliDesk 엔지니어링 팀은 명확한 설계 원칙을 세웠습니다:
"사용자에게 파이썬을 설치하거나, 드라이버를 맞추거나, 콘솔 명령어를 치게 만드는 순간 교육용 소프트웨어로서의 생명은 끝난다."

2. 완전 격리 포터블 런타임 아키텍처 (Python 3.11 + PyTorch cu128)

ZeliDesk의 이미지/3D 생성 모듈인 ZeliGen은 윈도우 OS의 전역 환경을 일절 건드리지 않는 완전 격리 샌드박스 런타임을 탑재했습니다.

[ ZeliGen AI 코어 엔진 v2 디렉토리 구조 ]
%LocalAppData%\ZeliDesk\ZeliGen\python_env\ (사용자 로컬 샌드박스)
 ├── python.exe                         <- CPython 3.11.9 Embeddable (amd64)
 ├── python311._pth                     <- 격리 경로 설정 ('import site' 활성화)
 ├── python311.dll, vcruntime140.dll    <- VC++ 2015-2022 재배포 런타임 내장
 ├── Lib\site-packages\
 │    ├── torch\                        <- PyTorch 2.11.0 + CUDA 12.8 Fat Binary
 │    ├── torchvision\                  <- Vision 연산 최적화 (0.22.0+)
 │    ├── diffusers\                    <- Hugging Face Diffusers (0.38.0)
 │    ├── transformers\                 <- 버전 고정 (4.57.6, 호환성 락)
 │    ├── accelerate\                   <- GPU VRAM 오프로딩 (1.13.0)
 │    └── safetensors, einops, trimesh  <- 3D/텐서 파싱 모듈
 └── .completed.flag                    <- 다운로드 무결성 자가 치유 플래그

기술적 의사결정: 왜 CPython Embedded인가?

일반적인 윈도우용 파이썬 설치 파일(.exe 인스톨러)은 관리자 권한(UAC)을 요구하고 레지스트리에 키를 등록합니다. 반면 ZeliGen이 채택한 CPython Embeddable Zip은 실행 파일과 DLL이 완벽히 자족(Self-contained)하는 초소형 배포 패키지입니다.

3. 하드웨어 파편화 극복: RTX 5090 Blackwell부터 내장 그래픽 CPU Fallback까지

실제 학교 및 국방 실습 환경에서 가장 치열하게 발생했던 문제는 GPU 세대별 아키텍처 비호환이었습니다.

① RTX 5090(Blackwell)과 RTX 3090/4080 사이의 '버전 딜레마'

기존 PyTorch cu121 빌드는 에이다 러브레이스(RTX 40 시리즈, sm_89)까지만 타깃으로 빌드되어 있었습니다. 이로 인해 RTX 3090이나 RTX 4080 Super가 장착된 컴퓨터에서는 완벽하게 돌아가던 코어가, 최신 납품된 RTX 5090(블랙웰 아키텍처, sm_120) PC에만 올라가면 커널 코드를 찾지 못해 프로세스가 즉시 크래시(비정상 종료)되는 현상이 발생했습니다.

GPU 아키텍처 세대 Compute Capability 구버전 (PyTorch cu121) 신버전 ZeliGen (PyTorch cu128)
RTX 20 시리즈 (Turing) sm_75 정상 동작 ⭕ 정상 동작 ⭕ (하위 호환)
RTX 30 시리즈 (Ampere) sm_86 정상 동작 ⭕ 정상 동작 ⭕ (하위 호환)
RTX 40 시리즈 (Ada Lovelace) sm_89 정상 동작 ⭕ 정상 동작 ⭕ (하위 호환)
RTX 50 시리즈 (Blackwell) sm_120 치명적 오류 ❌ (Crash) 완벽 지원 ⭕ (Native sm_120)

ZeliDesk 팀은 NVIDIA Fat Binary(팻 바이너리) 구조를 지원하는 CUDA 12.8로 엔진 전체를 마이그레이션했습니다. 최신 PyTorch cu128 바이너리는 sm_75부터 sm_120까지의 모든 마이크로아키텍처 머신 코드를 패키지 내부에 병렬로 포함(PTX JIT 포함)하고 있으므로, 구형 지포스부터 최신 플래그십까지 단 하나의 패키지로 100% 호환됩니다.

② 인텔/AMD 내장 그래픽 PC를 위한 CPU float32 자동 전환 안전망

일반적인 Stable Diffusion 파이프라인은 GPU VRAM을 절약하기 위해 반정밀도(torch.float16)를 강제합니다. 하지만 외장 GPU가 없는 일반 PC의 CPU에서 float16 모델을 돌리면 아래와 같은 악명 높은 런타임 에러가 발생합니다:

RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'

ZeliGen은 추론 파이프라인(pipeline_image.py)에 하드웨어 감지 및 동적 정밀도 폴백(Dynamic Precision Fallback)을 구현했습니다:

# pipeline_image.py 내부의 안전망 로직
is_cuda = torch.cuda.is_available()
device = "cuda" if is_cuda else "cpu"
dtype = torch.float16 if is_cuda else torch.float32  # CPU일 땐 자동으로 32비트 연산

kwargs = {
    "torch_dtype": dtype,
    "local_files_only": True
}
if is_cuda:
    kwargs["variant"] = "fp16"

# 모델 로딩 시 환경에 맞춰 자동 분기
_pipe = AutoPipelineForText2Image.from_pretrained(model_local_path, **kwargs)
_pipe = _pipe.to(device)

이 간단해 보이는 7줄의 코드가, "GPU가 없는 학교 전산실 PC에서도 에러 없이 무조건 완성된 그림을 출력해 내는" 기적의 호환성을 완성합니다.

4. Windows 11 보안과의 사투: HVCI(메모리 무결성)와 미서명 DLL 차단 극복

국가 디지털 교과서 납품용 최신 윈도우 11 노트북이나 군부대 PC는 보안 수준이 극도로 높습니다. 그중에서도 가장 까다로운 난제가 바로 HVCI (Hypervisor-protected Code Integrity, 메모리 무결성 / 코어 격리)였습니다.

⚠️ HVCI 차단 메커니즘 (Error Code 0xc0000428)

HVCI가 활성화된 최신 Windows 11 환경에서는, 사용자가 임의로 쓸 수 있는 경로(%LocalAppData% 등)에 배치된 DLL 중 마이크로소프트의 공식 WHQL 디지털 서명이 없는 네이티브 바이너리의 로드를 윈도우 커널 레벨에서 원천 차단합니다.

오픈소스 파이썬의 C-확장 모듈(.pyd)과 CUDA 런타임 DLL 중 일부는 서명이 누락되어 있어, 관리자 권한이 없는 일반 실행 시 프로세스가 에러 메시지 하나 남기지 못하고 증발해 버리는 현상이 발생했습니다.

ZeliDesk는 C# 호스트 레이어(PythonGenerationService.cs)에 사전 진단 엔진(DiagnoseRuntime)과 실시간 stderr 링버퍼 모니터링을 도입하여 이 문제를 해결했습니다:

5. 804GB 규모의 전용 Azure 모델 허브 & 2GB 프록시 한계 돌파

ZeliDesk는 사용자가 외부 해외 서버(Hugging Face, Civitai 등)에서 모델을 다운받도록 방치하지 않습니다. 학교 네트워크의 외부망 차단과 느린 속도를 해결하기 위해, 캐나다 중부 리전에 독립 모델 허브 전용 인프라(ZeliDesk.Server)를 직접 구축하여 운영 중입니다.

2.64GB 패키지의 배포 난제: Azure Front Door 2GB 하드 리밋

코어 엔진 ZIP 파일(2.64 GB)을 Azure 서버에 배포하는 과정에서, 클라우드 프론트엔드 라우터(ARR)의 단일 HTTP POST 2GB 용량 제한이라는 하드웨어 장벽을 만났습니다.

우리는 이를 해결하기 위해 청크 분할 업로드 및 서버 인플레이스(In-place) 병합 시스템을 설계했습니다:

[ 단계별 분할 전송 및 조립 프로세스 ]
1. 로컬 바이너리 분할 (upload_python_env_to_azure.ps1)
   - python_env_cuda128.zip (2.64 GB)
   - ├─ Part 1: 1,536.0 MB  (2GB 미만 안전 범위)
   - └─ Part 2: 1,172.2 MB
2. 각 파트 순차 HTTP POST 전송 (X-Api-Key 인증)
3. 서버 레벨 스트림 결합 (POST /api/models/runtime/merge-parts)
   - FileStream 바이너리 병합 후 단일 zip 복원 (2,839,776,055 bytes)
   - 서버 내 파트 임시 파일 즉시 청소 (저장 공간 최적화)
4. 최종 전송 소요 시간: 5.6분 (캐나다 중부 리전 전송 완료)

PowerShell의 2GB 버그와 Int32 오버플로우 트러블슈팅

분할 스크립트를 작성하던 중 매우 흥미로운 버그가 있었습니다. 2.64GB 크기의 파일을 분할하는 과정에서 PowerShell의 [math]::Min($chunkSize, $bytesRemaining) 구문이 2GB를 초과하는 $bytesRemaining 값을 내부적으로 System.Int32로 캐스팅하려다 오버플로우 예외를 던지며 87,000개의 빈 파트 파일을 생성하는 무한 루프에 빠진 것입니다.

우리는 모든 파일 크기 변수를 64비트 정수([long])로 명시적 캐스팅하고 삼항 조건문으로 치환하여, 대용량 바이너리도 1바이트의 오차 없이 정밀하게 쪼개고 결합할 수 있도록 스크립트를 완벽히 리팩토링했습니다.

배포 패키지 380배 슬림화: 6.57 GB ➔ 17 MB 다이어트

서버 코드를 배포(Publish)할 때 .csproj 파일에 남아있던 Data\models\**\* 복사 태그로 인해, 2.64GB 코어 엔진과 VFX SDK가 빌드 산출물에 묶여 배포 패키지가 무려 6.57 GB에 달했습니다. 이 거대한 패키지는 Azure App Service 배포 시 메모리 부족과 500 에러를 유발하는 시한폭탄이었습니다.

우리는 모델 저장소(D:\home\data\, 804GB)와 프로그램 실행 바이너리(D:\home\site\wwwroot\)의 물리 경로를 완벽히 격리하고 프로젝트 파일 설정을 교정했습니다. 그 결과 서버 배포 패키지 크기를 17 MB로 380배 감량시켰으며, 배포 및 롤아웃 시간을 단 15초로 단축하는 무중단 배포 체계를 확립했습니다.

6. 학교 현장 실습 시나리오별 27종 모델 매트릭스 & 사양 가이드

현재 ZeliDesk 모델 허브(ZeliDesk.Server)는 총 804.53 GB, 27종의 모델을 24시간 실시간 무손실 스트리밍(HTTP 206 Partial Content)으로 서비스하고 있습니다.

교육 영역 대표 모델명 포맷 / 용량 권장 하드웨어 교육 현장 실습 시나리오
필수 런타임 ZeliGen AI 코어 엔진 v2 ZIP (2.64 GB) 모든 윈도우 PC 모든 이미지 및 3D 생성을 구동하는 독립 기반 런타임
필수 런타임 llama.cpp 추론 엔진 ZIP (18 MB) 내장 그래픽 가능 GGUF 소형 언어 모델 구동을 위한 C++ 초경량 엔진
미술 / 창작 Stable Diffusion Turbo Diffusers (5.1 GB) VRAM 4GB 이상 1-Step 실시간 이미지 생성 (프롬프트 타이핑과 동시에 드로잉)
디자인 / 일러스트 SDXL Lightning 4-Step SafeTensors (5.1 GB) VRAM 8GB 이상 1024x1024 초고화질 포스터 및 웹툰 캐릭터 일러스트 실습
3D / 메타버스 TripoSR (Stability AI) PyTorch (1.7 GB) VRAM 6GB 이상 2D 이미지 1장으로 0.5초 만에 3D 메쉬(.obj) 추출 실습
수학 / 코딩 탐구 DeepSeek R1 1.5B (GGUF) GGUF (1.1 GB) RAM 8GB (내장 iGPU) 수학 풀이 과정 및 논리적 단계별 사고(Chain-of-Thought) 학습
국어 / 인문 사회 Qwen 2.5 3B (GGUF) GGUF (2.1 GB) RAM 8GB (내장 iGPU) 뛰어난 한국어 문해력을 바탕으로 한 독후감, 기사 요약, 토론 실습
교사 연구용 Llama 3.3 70B ~ DeepSeek 671B GGUF (42G~400G) 고성능 워크스테이션 교안 기획 및 연구용 초대형 파라미터 로컬 LLM 환경

7. 맺음말: 기술적 장벽 없는 AI 교육 평등을 향하여

진정한 에듀테크 혁신은 화려한 프롬프트를 입력하는 방법에 있지 않습니다. 강원도 산골 분교의 오래된 컴퓨터든, 국방 최전방 부대의 군 교육장이든, 대도시 최신 디지털 교실이든 모든 학습자가 차별 없이 AI의 가능성을 직접 경험할 수 있는 안정적인 기술적 토대를 제공하는 것이 핵심입니다.

ZeliDesk 엔지니어링 팀은 현장 교사들과 에듀테크 전문가들의 목소리에 귀를 기울이며, 앞으로도 윈도우 커널부터 클라우드 백엔드까지 이어지는 무결성(Zero-Config) 파이프라인을 계속해서 고도화해 나갈 것입니다.

지금 교실과 연구실에서 ZeliDesk를 만나보세요

별도 관리자 권한이나 복잡한 설정 없이, Microsoft Store에서 원클릭으로 설치할 수 있습니다.

⚡ Microsoft Store에서 무료 다운로드