TensorSharp, GGUF 언어 모델을 위한 순수 .NET 추론 엔진이 공개되었습니다. 이제 .NET 개발자들은 Python 서버를 별도로 구동할 필요 없이 대규모 언어 모델(LLM) 추론을 실행할 수 있습니다. 이 프로젝트는 Windows, macOS, Linux에서 실행되며 CPU, CUDA, MLX, Metal 및 Vulkan 백엔드를 지원하면서, 널리 사용되는 llama.cpp에 필적하는 성능을 제공한다고 주장합니다.
네이티브 .NET이 중요한 이유
대부분의 LLM 런타임은 C/C++로 작성되었거나 별도의 프로세스를 노출하는 Python 래퍼(wrapper)에 의존합니다. 이미 .NET 기반으로 서비스를 운영 중인 팀에게 이러한 추가 계층은 컨테이너, 프로세스 간 통신(IPC), 그리고 더 넓은 공격 표면(attack surface)을 의미합니다. 추론을 동일한 런타임 내에서 유지하면 개발자는 CI/CD 파이프라인을 단순화하고, 네트워크 홉(hop)으로 인한 지연 시간을 줄이며, Python 환경을 유지 관리하는 비용을 절감할 수 있습니다.
TensorSharp의 구축 방식
개발자는 llama.cpp를 재사용하는 대신 엔진을 처음부터 직접 작성했습니다. CPU 백엔드는 100% C#으로 작성되어 Windows와 Linux에서 별도의 네이티브 종속성 없이 실행됩니다. GPU 지원은 기존 그래픽 API를 활용합니다: Nvidia를 위한 CUDA, Apple 실리콘을 위한 MLX, macOS GPU를 위한 Metal, 그리고 크로스 플랫폼 하드웨어를 위한 Vulkan이 있습니다. Qwen 및 Gemma와 같은 모델을 위한 페이지드 키-값(paged KV) 캐시, 연속 배칭(continuous batching), 투기적 디코딩(speculative decoding)과 같은 최신 기술이 핵심에 포함되어 있습니다.
즉시 사용할 수 있는 주요 기능
- GGUF 모델 호환성 – 최신 오픈 소스 LLM 릴리스에서 사용되는 것과 동일한 형식입니다.
- 크로스 플랫폼 운영 – 코드 변경 없이 Windows, macOS, Linux에서 실행됩니다.
- OpenAI 및 Ollama 호환 HTTP API – 기존 클라이언트 라이브러리를 즉시 대체할 수 있습니다.
- 멀티모달 처리 – 프롬프트의 일부로 이미지, 비디오, 오디오 및 PDF를 입력받을 수 있습니다.
- 도구 호출(Tool calling) 및 구조화된 출력 – 채팅 기반 에이전트에서 흔히 사용되는 함수 호출(function-calling) 패턴을 지원합니다.
llama.cpp와의 성능 비교
유지 관리자가 공유한 벤치마크 결과는 다음과 같이 엇갈린 양상을 보입니다:
- 프리필(Prefill) 및 첫 번째 토큰 생성 시간(TTFT) – TensorSharp은 종종 llama.cpp보다 우수한 성능을 보여 초기 응답 지연 시간이 더 낮습니다.
- 디코딩 처리량(Decode throughput) – 일반적으로 llama.cpp와 비슷하거나 약간 느립니다.
수치상으로 볼 때, 순수 C# 구현 방식은 가장 지연 시간에 민감한 단계에서 속도를 희생하지 않으면서도, 초당 토큰 생성량(token-per-second) 측면에서 경쟁력을 유지하고 있습니다.
주의 사항
- 실제 성능은 모델 아키텍처, 하드웨어 구성 및 메모리 레이아웃에 따라 달라질 수 있습니다. 개발자는 프로덕션 환경에 적용하기 전에 직접 벤치마크를 수행해야 합니다.
향후 전망
텔레그램(Telegram)의 프로젝트 토론 채널을 통해 초기 사용자들은 결과를 공유하고 새로운 기능을 요청할 수 있습니다.
요약: TensorSharp는 .NET 기반 기업들이 별도의 Python 스택 없이 LLM 추론을 애플리케이션에 직접 내장할 수 있는 방법을 제공하며, 사실상의 표준인 llama.cpp와 대등한 수준의 지연 시간을 구현합니다. 프로덕션 팀은 대상 하드웨어에서 성능을 검증해야 하지만, 이 엔진은 .NET 생태계 내에서 네이티브 AI 서비스를 구축할 수 있는 명확한 길을 열어줍니다.
