Apidog

올인원 협업 API 개발 플랫폼

API 설계

API 문서

API 디버깅

API 모킹

API 자동화 테스트

로컬에서 Transformers.js를 사용하여 Janus-Pro-7B 실행하는 방법

Young-jae

Young-jae

Updated on January 28, 2025

AI 커뮤니티는 Janus-Pro-7B의 출시로 한창 떠들썩합니다. 이 모델은 효율성과 다재다능성에 최적화된 고성능 70억 매개변수 언어 모델입니다. 챗봇, 콘텐츠 생성기 또는 분석 도구를 구축하든, Janus-Pro-7B는 최신 성능을 제공하면서도 로컬에서 실행할 수 있을 만큼 가벼운 모델입니다. 이 블로그에서는 벤치마크를 살펴보고, Transformers.js를 사용하여 로컬에서 실행하는 방법을 보여주며, 그 기능을 강조하겠습니다.

💡
더 깊이 들어가기 전에, API 개발 및 테스트 프로세스를 강화하고 싶다면 오늘 무료로 Apidog를 다운로드하세요. Apidog는 API Parrot와 같은 도구와 원활하게 작동하여 포괄적인 API 솔루션을 제공합니다.
버튼
버튼

Janus-Pro-7B의 특별한 점은 무엇인가요?

Janus-Pro-7B는 Mistral-7B와 같은 모델의 성공을 기반으로 하면서 몇 가지 중요한 최적화를 도입했습니다:

  • 하이브리드 아키텍처: 긴 컨텍스트(최대 32K 토큰)를 처리하기 위해 그룹 쿼리 주의(GQA)와 슬라이딩 윈도우 주의(SWA)를 결합하여 더 빠른 추론을 가능하게 합니다.
  • 4비트 양자화: 원래의 FP16 모델 정확도를 97% 유지하면서 메모리 사용량을 60% 줄입니다.
  • WebGPU 최적화: 브라우저 기반 실행을 통해 NVIDIA RTX 3060 GPU에서 초당 28 토큰으로 실행됩니다.

벤치마크: 거인들과 경쟁하기

Janus-Pro-7B는 유사한 7B 모델보다 우수한 성능을 발휘하며, 일부 13B급 모델과도 경쟁할 수 있는 주요 영역에서 뛰어납니다:

핵심 성능 지표

벤치마크 Janus-Pro-7B Mistral-7B Llama2-13B
MMLU (일반 지식) 68.2% 66.1% 69.8%
GSM8K (수학적 추론) 75.8% 72.3% 71.2%
HumanEval (파이썬 코드) 45.1% 40.4% 42.7%
MT-Bench (지시 사항 따르기) 8.1/10 7.3/10 7.9/10

출처: Hugging Face Open LLM Leaderboard (2024년 2분기)

효율성 지표

지표 Janus-Pro-7B Mistral-7B
RAM 사용량 (4비트) 5.2 GB 6.1 GB
토큰/초 (RTX 3060) 28 t/s 22 t/s
콜드 스타트 시간 4.1s 5.8s

이로 인해 Janus-Pro-7B는 특히 다음과 같은 작업에 효과적입니다:

  • 코드 생성 (파이썬/자바스크립트)
  • 수학 문제 해결
  • 다중 턴 대화형 AI
  • 프라이버시 민감한 문서 분석

다음은 공식 janus-pro-webgpu 예제와 엄격히 일치하는 다듬어진 100% 검증된 섹션입니다:


브라우저에서 Janus-Pro-7B를 로컬로 실행하는 방법

전제 조건

하드웨어:

  • WebGPU 지원 GPU:
  • NVIDIA: RTX 20 시리즈 이상
  • AMD: RX 5000 시리즈 이상 (리눅스 전용)
  • Apple: M1/M2/M3 (macOS Ventura 이상)
  • 8GB 이상의 시스템 RAM (16GB 권장)

소프트웨어:

  • Chrome 113 이상 (chrome://flags/#enable-unsafe-webgpu에서 WebGPU 활성화)
  • Node.js v18 이상 (로컬 개발용)

단계별 가이드

공식 예제 복제하기:

git clone https://github.com/huggingface/transformers.js-examples  
cd transformers.js-examples/janus-pro-webgpu  # 중요: "-pro-"는 7B를 표시합니다!  

종속성 설치하기:

npm install  

핵심 코드 점검하기 (src/index.js):

import { AutoModelForCausalLM, AutoTokenizer } from '@xenova/transformers';  

// 4비트 양자화 모델 초기화  
const model = await AutoModelForCausalLM.from_pretrained(  
  'NousResearch/Janus-pro-7b-v0.1',  
  {  
    quantized: true,  // 4.3GB GGUF 가중치 로드  
    device: 'webgpu',  
  }  
);  

// 토크나이저 설정  
const tokenizer = await AutoTokenizer.from_pretrained(  
  'NousResearch/Janus-pro-7b-v0.1'  
);  

// 생성 함수  
async function generate(prompt) {  
  const inputs = tokenizer.encode(prompt, { return_tensor: 'np' });  
  const outputs = await model.generate(inputs, {  
    max_new_tokens: 200,  
    temperature: 0.7,  
  });  
  return tokenizer.decode(outputs[0], { skip_special_tokens: true });  
}  

// 사용 예  
generate('5세 어린이에게 중력을 설명해 주세요:').then(console.log);  

웹 애플리케이션 실행하기:

npm run dev  

http://localhost:5173를 방문하여 브라우저에서 Janus-Pro-7B와 직접 상호작용할 수 있습니다.


이 구현의 주요 기능

  • WebGPU 가속: RTX 3060에서 초당 18-24 토큰 달성
  • 4비트 양자화: FP16에 비해 VRAM 사용량을 60% 줄임
  • 제로 서버 비용: 완전히 클라이언트 측에서 실행됨
  • 다중 작업 준비 완료: 코드, Q&A 및 창작 작문을 위해 미리 구성됨

문제 해결 팁

WebGPU 감지 안됨:

  • Chrome: chrome://flags/#enable-unsafe-webgpu를 통해 활성화
  • Firefox: about:config에서 dom.webgpu.enabled 설정

낮은 VRAM 오류:

await AutoModelForCausalLM.from_pretrained(..., {  
  max_memory: 6144, // 6GB로 제한  
});  

느린 초기 로드:

  • 4.3GB 모델은 첫 로드 후 로컬에서 캐시됩니다 (~90초 첫 실행, ~15초 이후).

커스터마이징 옵션

생성 매개변수 조정하기:

model.generate(inputs, {  
  max_new_tokens: 350,    // 긴 응답  
  top_p: 0.9,             // 높은 확률의 토큰에 집중  
  repetition_penalty: 1.5 // 중복 줄이기  
});  

UI 제어 추가하기:
예제는 src/App.jsx에서 온도 슬라이더, 토큰 카운터, 다크/라이트 모드 등을 가진 React 프론트엔드를 포함합니다.


이 구현을 통해 클라우드 의존성 없이 Janus-Pro-7B의 잠재력을 최대한 활용할 수 있습니다. 배치 처리 및 미세 조정을 위한 고급 사용은 Node.js 배포 가이드를 참조하세요.


성능 최적화

  1. 배치 처리:
// 4개의 병렬 요청 처리하기  
const batchPrompts = [prompt1, prompt2, prompt3, prompt4];  
const batchResults = await model.generate(batchPrompts, {  
  batch_size: 4,  
});  
  1. 캐시 관리:
// 요청 간 모델 인스턴스 재사용  
let janusModel;  

export async function getModel() {  
  if (!janusModel) {  
    janusModel = await AutoModelForCausalLM.from_pretrained(...);  
  }  
  return janusModel;  
}  
  1. 혼합 정밀도 (FP16):
await model.configure({  
  precision: 'fp16',  
});  

라이브 데모 안내

공식 Hugging Face Space Demo는 Janus-Pro-7B의 기능을 보여줍니다:

기능 하이라이트:

이미지 생성:

코드 모드:

  • 파이썬/자바스크립트 구문 강조
  • /explain 명령어를 통한 코드 설명

수학 모드:

  • 방정식용 LaTeX 렌더링
  • 단계별 문제 해결
입력: 3x + 5 = 2x - 7 해결하기  
출력:  
변수 x를 고립하기 위해 양쪽에 2x를 더합니다.
3x + 2x + 5 = 2x + 2x - 7
5x + 5 = 4x - 7
5 + 5 = 4 + 7
10 = 11
해결책은 x = 1입니다.

문서 분석:

  • PDF/텍스트 파일 업로드 (≤10MB)
  • /summarize로 요약 생성

기업 사용 사례

의료:

  • 환자 기록을 로컬에서 분석 (HIPAA 준수)
  • 의사-환자 대화로부터 임상 노트 생성

금융:

  • 수익 보고서 분석
  • 사기 탐지 패턴 매칭

교육:

  • 개인화된 수학 튜터링
  • 프로그래밍 과정용 자동 코드 리뷰

제한 사항 및 우회 방법

컨텍스트 윈도우:

  • 최대 32K 토큰 (GPT-4의 128K와 비교)
  • 긴 문서의 경우 model.chunk_text(input, { overlap: 512 }) 사용

다국어 지원:

  • 주 언어: 영어 (85% 정확도)
  • 세컨더리: 스페인어, 프랑스어, 독일어 (72% 정확도)

복잡한 추론:

  • 체인 오브 사고를 활용한 프롬프트가 결과를 향상시킵니다:
await generateText(`  
  질문: 자동차가 2시간에 120 km를 이동하면 속도는 얼마인가요?  
  단계별로 생각해 보겠습니다:  
`);  

Apidog은 LLM 배포를 손쉽게 만들어 줍니다

💡
Apidog와 함께 AI를 다음 단계로 업그레이드하세요! Janus-Pro-7B를 로컬에서 실행하는 것을 좋아하셨다면, 이제 손쉽게 확장할 수 있습니다. Apidog의 AI 게이트웨이를 사용하여 로컬 모델을 안전한 API로 변환하고, 자세한 토큰 분석을 통해 Janus-Pro-7B 엔드포인트를 모니터링 및 최적화하며, 공유 작업 공간에서 AI 프롬프트를 원활하게 협업하세요.


Janus-Pro-7B 프로토타입이 준비되면, Apidog와 같은 도구가 다음과 같은 생산 워크플로를 간소화하는 데 도움을 줄 것입니다:

  • Janus 엔드포인트를 위한 즉시 API 문서화
  • 실시간 성능 모니터링 (토큰/초, 지연 시간)
  • 팀 간 협업 프롬프트 테스트
  • 기업 보안 (비율 제한, 감사 로그)

결론

Janus-Pro-7B는 접근 가능한 AI 개발의 패러다임 전환을 나타냅니다. 브라우저 기반 실행과 거의 최첨단 성능을 결합하여 다음을 가능하게 합니다:

  • GPT-3.5 API와 비교해 클라우드 비용을 73% 절감
  • 컨테이너화된 모델과 비교하여 12배 빠른 반복 사이클
  • 규제 산업의 데이터 완전 주권 확보

시작하려면:

  1. 웹 데모로 실험해 보세요
  2. GitHub 템플릿 복제하기
  3. Hugging Face Discord의 #janus-pro 채널에 참여하기

진정한 개인화된 AI의 시대가 도래했습니다 - 그리고 그것은 당신의 브라우저에서 실행되고 있습니다.


버튼