TorchScale - 기반 아키텍처 라이브러리
요약
TorchScale은 연구원과 개발자가 Transformer 기반의 기초 모델(foundation models) 및 AGI를 효율적으로 확장할 수 있도록 설계된 PyTorch 라이브러리입니다. 이 라이브러리는 안정성, 일반성, 역량, 효율성에 초점을 맞추어 DeepNet, Foundation Transformers 등 다양한 최신 아키텍처 구현을 지원합니다. 최근에는 LongNet 및 RetNet과 같은 혁신적인 모델 구조가 추가되어 대규모 언어 모델 개발에 활용되고 있습니다.
핵심 포인트
- PyTorch 기반의 Transformer 확장 라이브러리입니다.
- 안정성, 일반성, 효율성에 초점을 맞춘 아키텍처를 제공합니다.
- DeepNet, Foundation Transformers 등 최신 연구 결과를 구현했습니다.
- LongNet, RetNet 등 차세대 LLM 모델 구조가 포함되어 있습니다.
TorchScale - 기반 아키텍처 라이브러리
<p> <a href="https://github.com/microsoft/torchscale/blob/main/LICENSE"><img alt="MIT License" src="https://img.shields.io/badge/license-MIT-blue.svg" /></a> <a href="https://pypi.org/project/torchscale"><img alt="MIT License" src="https://badge.fury.io/py/torchscale.svg" /></a> </p>TorchScale은 연구원과 개발자가 Transformer를 효율적이고 효과적으로 확장할 수 있도록 하는 PyTorch 라이브러리입니다.
기초 모델(foundation models) 및 A(G)I를 위한 새로운 아키텍처 개발에 중점을 두며, 모델링 일반성(modeling generality) 및 역량(capability), 그리고 학습 안정성(training stability)과 효율성에 초점을 맞춥니다.
- 안정성 (Stability) - DeepNet: Transformer를 1,000 레이어 이상으로 확장
- 일반성 (Generality) - Foundation Transformers (Magneto): 언어, 비전, 음성 및 멀티모달을 포함한 작업과 모달리티 전반에 걸친 진정한 범용 모델링(general-purpose modeling)을 향하여
- 역량 (Capability) - Length-Extrapolatable Transformer
- 효율성 (Efficiency) - X-MoE: 확장 가능하고 미세 조정 가능한 희소 혼합 전문가(Mixture-of-Experts, MoE)
모델 아키텍처의 혁명 (The Revolution of Model Architecture)
- BitNet: 대규모 언어 모델을 위한 1비트 Transformer
- RetNet: Retentive Network: 대규모 언어 모델을 위한 Transformer의 후속작
- LongNet: Transformer를 1,000,000,000 토큰까지 확장
뉴스 (News)
- 2023년 12월: LongNet 및 LongViT 출시
- 2023년 10월: RetNet의 기본 모듈로 RMSNorm과 SwiGLU 업데이트
- 2022년 11월: TorchScale 0.1.1 출시 [Paper] [PyPI]]
설치 (Installation)
설치 방법:
pip install torchscale
대안으로, 로컬 환경에서 직접 개발할 수 있습니다:
git clone https://github.com/microsoft/torchscale.git
cd torchscale
pip install -e .
Turing, Ampere, Ada 또는 Hopper GPU의 더 빠른 학습을 위해 Flash Attention을 설치하세요:
pip install flash-attn
또는 Volta, Turing, Ampere, Ada 또는 Hopper GPU를 위해 xFormers를 사용하세요:
# cuda 11.8 버전
pip3 install -U xformers --index-url https://download.pytorch.org/whl/cu118
# cuda 12.1 버전
...
시작하기 (Getting Started)
위의 기본적인 연구 기능을 활성화하여 모델을 생성하는 데는 몇 줄의 코드만 필요합니다. BERT와 유사한 인코더를 빠르게 얻는 방법은 다음과 같습니다:
>>> from torchscale.architecture.config import EncoderConfig
>>> from torchscale.architecture.encoder import Encoder
...
또한 Decoder 아키텍처와 EncoderDecoder 아키텍처도 지원합니다:
# 디코더 모델 생성
>>> from torchscale.architecture.config import DecoderConfig
>>> from torchscale.architecture.decoder import Decoder
...
RetNet 모델을 생성하는 데는 몇 줄의 코드만 필요합니다:
# RetNet 모델 생성
>>> import torch
>>> from torchscale.architecture.config import RetNetConfig
...
LongNet 모델 (필수: Flash Attention)의 경우:
>>> import torch
>>> from torchscale.architecture.config import EncoderConfig, DecoderConfig
>>> from torchscale.model.longnet import LongNetEncoder, LongNetDecoder
...
주요 기능 (Key Features)
-
DeepNorm을 사용하여 Post-LayerNorm 트랜스포머의 학습 안정성 개선
Config클래스에서 deepnorm=True를 설정하여 활성화할 수 있습니다.- 모델 아키텍처(즉, 인코더, 디코더 또는 인코더-디코더)에 따라 잔차 연결과 초기화 방법을 모두 조정합니다.
-
subln=True로 활성화됩니다. 이는 기본적으로 활성화되어 있습니다.- 각 서브 레이어에 또 다른 LayerNorm을 도입하고 모델 아키텍처에 따라 초기화를 조정합니다.
- SubLN과 DeepNorm은 하나의 모델에서 함께 사용할 수 없다는 점에 유의하세요.
-
X-MoE: 효율적이고 미세 조정 가능한 희소 MoE 모델링
use_xmoe=True로 활성화됩니다.- 모든
'moe_freq'FeedForwardNetwork레이어를 X-MoE 레이어로 대체합니다.
-
multiway=True로 활성화됩니다.- 여러 모달리티에 사용되는 트랜스포머 매개변수 풀을 제공합니다.
-
xpos_rel_pos=True로 활성화됩니다.
-
상대 위치 편향 (Relative position bias)
rel_pos_buckets와max_rel_pos를 조정하여 활성화됩니다.
-
SparseClip: 희소 MoE 모델의 그래디언트 클리핑 개선
- FairSeq (또는 다른) 레포에 쉽게 적용할 수 있는 샘플 코드를 제공합니다.
-
Retentive Network: 대규모 언어 모델을 위한 트랜스포머의 후계자
config = RetNetConfig(vocab_size=64000)및retnet = RetNetDecoder(config)로 생성됩니다.
위의 대부분의 기능들은 해당 매개변수를 config에 전달하는 것만으로 사용할 수 있습니다. 예를 들면:
>>> from torchscale.architecture.config import EncoderConfig
>>> from torchscale.architecture.encoder import Encoder
...
예시 (Examples)
TorchScale을 다음 시나리오/작업에서 사용하는 방법을 보여주는 예시들이 있습니다:
-
언어 (Language)
-
Vision
-
ViT/BEiT [진행 중]
-
Speech
-
Multimodal
다양한 작업(예: 비전 사전 학습 및 음성 인식)과 다양한 딥러닝 도구 키트(예: DeepSpeed, Megatron-LM)에 대한 더 많은 예제를 제공할 계획입니다. 의견이나 PR은 환영합니다!
감사의 글 (Acknowledgments)
TorchScale의 일부 구현체는 FairSeq 리포지토리와 UniLM 리포지토리에서 각색되었거나 영감을 받은 것입니다.
인용 (Citations)
이 리포지토리가 유용하다고 생각되시면, 다음 작업을 인용해 주시기를 고려해 주세요:
@article{torchscale,
author = {Shuming Ma and Hongyu Wang and Shaohan Huang and Wenhui Wang and Zewen Chi and Li Dong and Alon Benhaim and Barun Patra and Vishrav Chaudhary and Xia Song and Furu Wei},
title = {{TorchScale}: {Transformers} at Scale},
...
@article{deepnet,
author = {Hongyu Wang and Shuming Ma and Li Dong and Shaohan Huang and Dongdong Zhang and Furu Wei},
title = {{DeepNet}: Scaling {Transformers} to 1,000 Layers},
...
@article{magneto,
author = {Hongyu Wang and Shuming Ma and Shaohan Huang and Li Dong and Wenhui Wang and Zhiliang Peng and Yu Wu and Payal Bajaj and Saksham Singhal and Alon Benhaim and Barun Patra and Zhun Liu and Vishrav Chaudhary and Xia Song and Furu Wei},
title = {Foundation {Transformers}},
...
On the Representation Collapse of Sparse Mixture of Experts
저자: Zewen Chi, Li Dong, Shaohan Huang, Damai Dai, Shuming Ma, Barun Patra, Saksham Singhal, Payal Bajaj, Xia Song, Xian-Ling Mao, Heyan Huang, Furu Wei
Retentive Network: A Successor to Transformer for Large Language Models
저자: Yutao Sun, Li Dong, Shaohan Huang, Shuming Ma, Yuqing Xia, Jilong Xue, Jianyong Wang, Furu Wei
LongNet: Scaling Transformers to 1,000,000,000 Tokens
저자: Jiayu Ding, Shuming Ma, Li Dong, Xingxing Zhang, Shaohan Huang, Wenhui Wang, Nanning Zheng, Furu Wei
When an Image is Worth 1,024 x 1,024 Words: A Case Study in Computational Pathology
저자: Wenhui Wang, Shuming Ma, Hanwen Xu, Naoto Usuyama, Jiayu Ding, Hoifung Poon, Furu Wei
기여하기 (Contributing)
이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 기여자 라이선스 계약(Contributor License Agreement, CLA)에 동의해야 하며, 이 계약은 귀하가 저희에게 기여한 내용을 사용할 권리를 가지고 있으며 실제로 그 권리를 부여한다는 것을 선언하는 것입니다. 자세한 내용은 https://cla.opensource.microsoft.com을 방문해 주십시오.
풀 리퀘스트(pull request)를 제출할 때 CLA 봇이 자동으로 CLA 제공 여부를 판단하고 PR에 적절하게 표시합니다 (예: 상태 확인, 댓글). 단순히 봇이 제공하는 지침을 따르면 됩니다. 저희의 CLA를 사용하는 모든 저장소에서 단 한 번만 이 과정을 거치면 됩니다.
본 프로젝트는 Microsoft Open Source Code of Conduct를 채택했습니다.
더 자세한 정보는 Code of Conduct FAQ를 참조하거나
추가 질문이나 의견이 있으시면 Furu Wei 또는 Shuming Ma에게 문의해 주십시오.
상표권(Trademarks)
본 프로젝트에는 프로젝트, 제품 또는 서비스의 상표나 로고가 포함될 수 있습니다. Microsoft 상표나 로고를 승인받아 사용하는 것은 Microsoft의 상표 및 브랜드 가이드라인을 준수해야 하며, 이를 따라야 합니다.
본 프로젝트의 수정된 버전에 Microsoft 상표나 로고를 사용하는 것은 혼란을 야기하거나 Microsoft의 후원을 암시해서는 안 됩니다.
제3자 상표나 로고 사용은 해당 제3자의 정책을 따릅니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기