knights-analytics/hugot

Onnx transformer pipelines in Golang

그것이 무엇인가

Hugot는 Go 코드에서 직접 Hugging Face 스타일 트랜스포머 파이프라인을 실행할 수 있는 Go 라이브러리입니다. ONNX 형식으로 내보낸 모델과 함께 작동하며 텍스트 분류, 질문 응답, 이미지 분할, 오디오 전사, 제로샷 분류 등 다양한 작업을 지원합니다. 라이브러리는 세 가지 교체 가능한 백엔드를 제공합니다:

  • 순수 Go (C 종속성 없음, 소규모 모델에 적합)
  • ONNX Runtime (ORT) – 가장 빠른 CPU/GPU 백엔드
  • OpenXLA – TPU 지원 및 기타 XLA 가속기를 활성화합니다.

누가 사용할 수 있는가

  • 별도의 Python 서버를 호출하지 않고 서비스에 AI 추론을 포함하려는 Go 개발자.
  • Go 기반 프로덕션 스택에서 Hugging Face 모델을 배포하는 ML 엔지니어.
  • 온프레미스, CPU, GPU 또는 TPU에서 추론을 실행하고 단일 언어 코드베이스를 선호하는 팀.

핵심 기능 (README에 설명된 대로)

기능 세부 사항
모델 호환성 Optimum을 통해 ONNX로 내보낼 수 있는 모든 Hugging Face 모델이 작동하며 예측은 Python 참조와 일치합니다.
지원되는 파이프라인 텍스트, 비전, 오디오, 멀티모달 및 클래식 ML을 포함한 30개 이상의 파이프라인 (예: textClassification, imageSegmentation, automaticSpeechRecognition, zeroShotClassification, objectDetection 등). 일부 파이프라인은 ORT 전용입니다.
백엔드 선택 빌드 태그(-tags ORT, -tags XLA, -tags ALL)로 컴파일 시 선택합니다. Go 백엔드는 cgo가 필요 없습니다. ORT와 XLA는 하드웨어 가속을 제공합니다.
하드웨어 가속 CPU(기본), CUDA를 통한 NVIDIA GPU(ORT 또는 XLA), TPU(XLA 전용), 그리고 ONNX Runtime을 통한 TensorRT, DirectML, CoreML, OpenVINO 지원.
훈련/파인튜닝 goMLX를 사용하여 ONNX 모델을 로드하고 파인튜닝한 후 ONNX로 다시 씁니다. 현재 FeatureExtraction 파이프라인에서 사용 가능합니다(시맨틱 검색 임베딩에 유용).
생성형 AI ONNX Runtime의 Generative AI 엔진을 통해 생성 모델을 실행합니다. WithGenerativeEngine을 통한 동시 요청 및 배치 처리를 지원합니다.
설치 go get github.com/knights-analytics/hugot; ORT/XLA용 선택적 C 라이브러리는 릴리스 또는 Docker 이미지에서 가져올 수 있습니다.
사용 예 README에는 감정 모델을 다운로드하고 텍스트 분류 파이프라인을 만들고 문자열 배치에서 실행하고 JSON 결과를 출력하는 전체 Go 프로그램이 포함되어 있습니다.

작동 방식 (높은 수준)

  1. 모델 다운로드 – hugot.DownloadModel이 Hugging Face 허브에서 ONNX 모델을 가져옵니다.
  2. 세션 생성 – NewGoSession, NewXLASession 또는 NewORTSession이 선택한 백엔드에 바인딩된 런타임 컨텍스트를 생성합니다.
  3. 파이프라인 구축 – 구성(예: TextClassificationConfig)을 session.NewPipeline에 전달합니다.
  4. 추론 – pipeline.RunPipeline(ctx, inputs)를 호출합니다. 라이브러리가 토큰화, 모델 실행 및 출력 파싱을 처리합니다.
  5. 훈련 – 세션에서 Trainer를 만들고 데이터 세트(sentence1, sentence2, score가 포함된 JSONL)를 제공한 다음 trainer.Train을 호출합니다. 파인튜닝된 모델은 저장하고 다른 파이프라인처럼 재사용할 수 있습니다.

생태계 및 라이선스

  • 프로젝트는 오픈 소스입니다(MIT 스타일 배지 링크는 허용적 라이선스를 시사합니다).
  • 순수 Go 및 XLA 백엔드에는 goMLX를, ORT 백엔드에는 ONNX Runtime을 기반으로 합니다.
  • 모든 종속성이 사전 설치된 Docker 이미지가 제공되어 빠른 테스트가 가능합니다.

Hugot를 선택해야 할 때

  • 이미 Go로 서비스를 작성하고 있으며 Python-to-Go RPC 계층을 피하려는 경우.
  • 저지연 온디바이스 추론(예: 엣지 서비스, 마이크로서비스 또는 실시간 API)이 필요한 경우.
  • 모델을 ONNX로 내보낼 수 있는 경우(대부분의 Hugging Face 모델이 해당).
  • Go 생태계를 떠나지 않고 선택적 GPU/TPU 가속을 원하는 경우.

위의 모든 정보는 저장소의 README에서 직접 가져온 것이며 외부 가정은 추가되지 않았습니다.

관련

  • 프로젝트
  • Dispatch
  • Dispatch
  • Dispatch
  • 프로젝트