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 프로그램이 포함되어 있습니다. |
작동 방식 (높은 수준)
- 모델 다운로드 –
hugot.DownloadModel이 Hugging Face 허브에서 ONNX 모델을 가져옵니다. - 세션 생성 –
NewGoSession,NewXLASession또는NewORTSession이 선택한 백엔드에 바인딩된 런타임 컨텍스트를 생성합니다. - 파이프라인 구축 – 구성(예:
TextClassificationConfig)을session.NewPipeline에 전달합니다. - 추론 –
pipeline.RunPipeline(ctx, inputs)를 호출합니다. 라이브러리가 토큰화, 모델 실행 및 출력 파싱을 처리합니다. - 훈련 – 세션에서
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
- 프로젝트