Skip to main content

以配置文件的方式构建transformer模型

Project description

OSC-Transformers

🚀 Configuration-driven Modular Transformer Model Building Framework

Python PyTorch License

Flexible, efficient, and extensible Transformer model building tools

中文文档: README-zh.md

✨ Features

  • 🔧 Configuration Driven: Build Transformer models through simple configuration files
  • 🧩 Modular Design: Support custom registration of various components
  • High Performance: Support CUDA Graph and Paged Attention

🛠️ Supported Components

Component Type Built-in Implementation
Attention Mechanism PagedAttention
Feedforward Network SwiGLU
Normalization RMSNorm
Embedding Layer VocabEmbedding
Output Head LMHead

📦 Installation

  • Install latest version PyTorch
  • Install flash-attn: It is recommended to download the official pre-built whl package to avoid compilation issues
  • Install osc-transformers
pip install osc-transformers

🚀 Quick Start

Create model.cfg(Qwen3-0.6B):

[model]
@architecture = "TransformerDecoder"
num_layers = 28
prenorm = "True"

[model.attention]
@attention = "PagedAttention"
in_dim = 1024
num_heads = 16
head_dim = 128
num_query_groups = 8
rope_base = 1000000
q_bias = "False"
k_bias = "False"
v_bias = "False"
o_bias = "False"

[model.attention.k_norm]
@normalization = "RMSNorm"
in_dim = 128
eps = 0.000001

[model.attention.q_norm]
@normalization = "RMSNorm"
in_dim = 128
eps = 0.000001

[model.embedding]
@embedding = "VocabEmbedding"
num_embeddings = 151936
embedding_dim = 1024

[model.feedforward]
@feedforward = "SwiGLU"
in_dim = 1024
hidden_dim = 3072
up_bias = "False"
gate_bias = "False"
down_bias = "False"

[model.head]
@head = "LMHead"
in_dim = 1024
out_dim = 151936
bias = "False"

[model.norm]
@normalization = "RMSNorm"
in_dim = 1024
eps = 0.000001

Code example:

from osc_transformers import TransformerDecoder, Sequence, SamplingParams

# Build model
model = TransformerDecoder.from_config("model.cfg")
model.setup(gpu_memory_utilization=0.9, max_model_len=40960, device="cuda:0")

# Batch inference
seqs = [Sequence(token_ids=[1,2,3,4,5,6,7,8,9,10], sampling_params=SamplingParams(temperature=0.5, max_generate_tokens=1024))]
seqs = model.batch(seqs)

# Streaming inference
seq = Sequence(token_ids=[1,2,3,4,5,6,7,8,9,10], sampling_params=SamplingParams(temperature=0.5, max_generate_tokens=1024))
for token in model.stream(seq):
    pass

📚 Inference Performance

osc-transformers bench examples/configs/qwen3-0_6B.cfg --num_seqs 64 --max_input_len 1024 --max_output_len 1024 --gpu_memory_utilization 0.9
Architecture Model Device Throughput(tokens/s)
TransformerDecoder Qwen3-0.6B 4090 5400
TransformerDecoder Qwen3-0.6B 3090 4000

📚 Acknowledgments

The core code of this project mainly comes from the following projects:

🤝 Contributing

Welcome to submit Issue and Pull Request!

📄 License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

osc_transformers-0.3.1.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

osc_transformers-0.3.1-py3-none-any.whl (30.6 kB view details)

Uploaded Python 3

File details

Details for the file osc_transformers-0.3.1.tar.gz.

File metadata

  • Download URL: osc_transformers-0.3.1.tar.gz
  • Upload date:
  • Size: 25.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for osc_transformers-0.3.1.tar.gz
Algorithm Hash digest
SHA256 487ecda3353d3d89f621794182bf313b72594f475defd96acf377c7adc9526e4
MD5 acea7918c2b9988e641223ed02eaf694
BLAKE2b-256 2759d5bfbfadc70022d0654d39bad6e17e95bed371a509660777813b543f79f6

See more details on using hashes here.

File details

Details for the file osc_transformers-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: osc_transformers-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 30.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for osc_transformers-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0abc454d7a92014e2fb3e4c469edb87a9027ea6e2ad4585ba531bcded443446d
MD5 9ba74f8bcdacad3e5efb79bc55f379fb
BLAKE2b-256 1c54e7279ebe6b65f0f8de964b7b50b1f0f145ff077b9e6ed3b850c4fa58c876

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page