기타 보관함/개발자정보
회사 내부의 폐쇄망(오프라인 환경)에서 자체적으로 AI 모델을 설치하고 학습한 후 서비스할 수 있는 방법
오아름 샘
2025. 4. 26. 10:08
반응형
주요 조건: 오프라인 설치 가능, 상용화 가능한 오픈소스 라이선스, 로컬 학습 및 추론 지원
1. 폐쇄망용 AI 모델 선택 기준
- 오픈소스 라이선스 (Apache 2.0, MIT 등 상업적 사용 허용)
- 모델 크기 (7B~13B 파라미터: 일반적인 서버 GPU에서 실행 가능)
- 오프라인 설치 지원 (Hugging Face에서 미리 다운로드 가능)
추천 모델
모델 이름라이선스최소 GPU 요구사항비고
Mistral 7B | Apache 2.0 | RTX 3090 (24GB) | 높은 성능, 영어/다국어 지원 |
LLaMA 3 | Meta 허가권 | RTX 4090 (24GB) | 메타 승인 필요 |
Gemma 7B | Apache 2.0 | A100 (40GB) | Google 개발, 경량화 |
Falcon 7B | Apache 2.0 | RTX 3090 (24GB) | 상업적 사용 가능 |
⚠️ LLaMA 3은 Meta의 허가가 필요하므로, Mistral 7B 또는 Gemma 7B를 권장합니다.
2. 폐쇄망 설치를 위한 준비 사항
(1) 하드웨어
- GPU 서버: NVIDIA GPU (RTX 3090/4090, A100/H100 권장) + CUDA 12.1
- 인터넷 연결 가능 PC: 모델 미리 다운로드 후 폐쇄망으로 이동
- 저장 장치: 모델 가중치(20~100GB) 및 데이터셋 저장용 SSD
(2) 소프트웨어
- OS: Ubuntu 22.04 LTS (권장)
- Docker: 오프라인 환경에서 의존성 문제 방지
- Python 3.10 + 필수 라이브러리 (torch, transformers, vllm 등)
3. 오프라인 설치 방법 (단계별)
Step 1. 인터넷 연결된 PC에서 모델 & 라이브러리 미리 다운로드
# 1) 모델 다운로드 (Hugging Face)
from huggingface_hub import snapshot_download
model_dir = snapshot_download(repo_id="mistralai/Mistral-7B-v0.1")
# 2) 라이브러리 패키징 (pip → 오프라인 설치용 .whl 파일 생성)
pip download torch transformers vllm -d ./offline_packages
Step 2. 폐쇄망 서버에 파일 복사
- model_dir (모델 가중치)와 offline_packages (파이썬 라이브러리)를 USB/내부망으로 이동.
Step 3. 폐쇄망 서버에서 설치
# 1) Python 라이브러리 오프라인 설치
pip install --no-index --find-links=./offline_packages torch transformers vllm
# 2) 모델 로드 (로컬 경로 지정)
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("./mistral-7b")
tokenizer = AutoTokenizer.from_pretrained("./mistral-7b")
4. 폐쇄망에서 모델 학습 (Fine-Tuning)
(1) 데이터셋 준비
- 형식: JSON, CSV, 텍스트 파일
예시 (custom_data.jsonl):
{"text": "회사제품: A상품은 2024년 출시된...", "category": "제품소개"}
(2) LoRA로 효율적인 학습
from peft import LoraConfig, get_peft_model
# LoRA 설정
peft_config = LoraConfig(
r=8,
target_modules=["q_proj", "k_proj", "v_proj"],
lora_alpha=16,
lora_dropout=0.05,
)
# 모델 + LoRA 적용
model = get_peft_model(model, peft_config)
model.train()
# 학습 코드 (예시)
trainer = Trainer(
model=model,
train_dataset=dataset, # 로컬 데이터셋 로드
args=TrainingArguments(output_dir="./results", per_device_train_batch_size=4),
)
trainer.train()
5. 폐쇄망 내부에서 서비스 배포
(1) FastAPI로 REST API 구축
from fastapi import FastAPI
app = FastAPI()
@app.post("/generate")
def generate(prompt: str):
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=100)
return {"response": tokenizer.decode(outputs[0])}
(2) Docker로 배포 (오프라인 환경용)
FROM nvidia/cuda:12.1-runtime
COPY . /app
WORKDIR /app
RUN pip install --no-index --find-links=./offline_packages torch transformers
CMD ["uvicorn", "app:app", "--host", "0.0.0.0"]
6. 보안 및 유지보수 팁
- 모델 암호화: 저장 시 gpg로 암호화
- 접근 제어: 내부망 IP 화이트리스트 설정
- 모델 버전 관리: Git LFS + 내부 Git 서버 활용
- 모델 선택: Mistral 7B 또는 Gemma 7B (Apache 2.0 라이선스)
- 인터넷 PC에서 미리 다운로드 → 폐쇄망으로 이동
- 로컬 학습 (LoRA/PEFT 활용) → FastAPI/Docker 배포
- 내부망 전용 서비스 구축
⚠️ LLaMA 3은 Meta의 승인이 필요하며, Falcon 40B는 GPU 여러 대가 필요하므로 주의하세요.
필요시 vLLM으로 고속 추론 또는 텐서RT-LLM으로 최적화할 수 있습니다
회사 내부의 폐쇄망(오프라인 환경)에서 자체적으로 AI 모델을 설치하고 학습한 후 서비스할 수 있는 AI를 찾아주시고 단계별로 방법을 알려주세요.
반응형