StableLM
개요
StableLM은 Stability AI에서 개발한 오픈소스 언어 모델 시리즈다. 다양한 크기(1.6B ~ 12B)로 제공되며, 다국어 및 코드 데이터셋으로 학습되었다. Stable LM 2 12B는 2조 토큰의 다국어 및 코드 데이터로 두 번의 에포크 학습되었다.
- 개발사: Stability AI
- 최신 버전: Stable LM 2 (2024년 2월)
- 모델 유형: Decoder-only Transformer
사양
모델 패밀리
| 모델명 |
파라미터 |
컨텍스트 |
학습 데이터 |
| StableLM-3B-4e1t |
3B |
4K |
1T 토큰 |
| StableLM 2 1.6B |
1.6B |
4K |
2T 토큰 |
| StableLM 2 12B |
12.1B |
4K |
2T 토큰 |
| StableLM-Zephyr-3B |
3B |
4K |
대화 미세조정 |
Stable LM 2 12B 상세 사양
| 항목 |
내용 |
| 파라미터 수 |
12,143,605,760 (12.1B) |
| Hidden Size |
5120 |
| 레이어 수 |
40 |
| 어텐션 헤드 |
32 |
| KV 헤드 |
8 (GQA) |
| 컨텍스트 길이 |
4,096 토큰 |
| 학습 데이터 |
2T 토큰 |
| 학습 에포크 |
2 |
아키텍처 특징
| 특징 |
설명 |
| 위치 인코딩 |
RoPE (처음 25% 헤드 차원에만 적용) |
| 정규화 |
LayerNorm (bias 없음), per-head QK normalization |
| 병렬 레이어 |
Parallel attention + FFN residual layers |
| Bias |
FFN과 GQA에서 bias 제거 |
| 토크나이저 |
Arcade100k (tiktoken.cl100k_base 확장) |
| 어휘 크기 |
100,352 |
라이선스 및 가격
| 항목 |
내용 |
| 라이선스 |
Stability AI Community License |
| 비상업적 사용 |
허용 |
| 상업적 사용 |
https://stability.ai/license 참조 |
| 멤버십 |
https://stability.ai/membership |
주요 특징
1. 다국어 지원
학습 데이터에 CulturaX 및 OSCAR 코퍼스 포함:
- 영어 중심
- 다국어 텍스트 포함
2. 학습 데이터 구성
- Falcon RefinedWeb
- RedPajama-Data (Books3 제외)
- The Pile (Books3 제외)
- StarCoder (코드)
- CulturaX (다국어)
- OSCAR (다국어)
3. 최적화된 아키텍처
- RoPE를 헤드 차원의 25%에만 적용 (처리량 향상)
- 병렬 어텐션/FFN 레이어
- Grouped Query Attention (GQA)
- Flash Attention 2 지원
4. 학습 인프라
- 384 NVIDIA H100 GPU (AWS P5 인스턴스)
- gpt-neox 포크 사용
- 2D 병렬화 (Data + Tensor Parallel)
- ZeRO-1 최적화
코드 예시
기본 추론
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("stabilityai/stablelm-2-12b")
model = AutoModelForCausalLM.from_pretrained(
"stabilityai/stablelm-2-12b",
torch_dtype="auto",
)
model.cuda()
inputs = tokenizer("The weather is always wonderful", return_tensors="pt").to(model.device)
tokens = model.generate(
**inputs,
max_new_tokens=64,
temperature=0.70,
top_p=0.95,
do_sample=True,
)
print(tokenizer.decode(tokens[0], skip_special_tokens=True))
Flash Attention 2 사용
model = AutoModelForCausalLM.from_pretrained(
"stabilityai/stablelm-2-12b",
torch_dtype="auto",
attn_implementation="flash_attention_2",
)
장점
- 다양한 모델 크기 (1.6B ~ 12B)
- 다국어 및 코드 데이터 학습
- Flash Attention 2 지원
- 효율적인 GQA 아키텍처
- 비상업적 사용 자유
- 기술 보고서 공개
단점
- 상업적 사용 시 별도 라이선스 필요
- 4K 컨텍스트로 제한적
- 베이스 모델로 미세조정 필요
- 부적절한 콘텐츠 생성 가능성
- transformers 4.40.0 이상 필요
제한 사항
| 제한 사항 |
설명 |
| 베이스 모델 |
미세조정 없이 불안정한 동작 가능 |
| 콘텐츠 |
부적절하거나 공격적인 내용 생성 가능 |
| 안전성 |
데이터 필터링에도 불구하고 학습 데이터 영향 |
| 민감한 컨텍스트 |
추가 완화 조치 없이 사용 부적합 |
참고자료
- Hugging Face: https://huggingface.co/stabilityai/stablelm-2-12b
- 기술 보고서: https://arxiv.org/abs/2402.17834
- GPT-NeoX: https://github.com/EleutherAI/gpt-neox
- 설정 파일: https://github.com/Stability-AI/StableLM/blob/main/configs/stablelm-2-12b.yml
- 상업적 라이선스: https://stability.ai/license
- 문의: lm@stability.ai