Transformers documentation
MuseGlimmerAssistant
Mô hình này đã được đóng góp cho Hugging Face Transformers vào ngày 2026-08-09.
MuseGlimmerAssistant
MuseGlimmerAssistant là drafter DFlash cho MuseGlimmer. Nó không phải là một mô hình ngôn ngữ độc lập. Nó có 5 lớp cửa sổ trượt và không có embeddings riêng. Nó mượn embeddings đầu vào và đầu ra của mô hình chính, và đọc các trạng thái ẩn của mô hình chính tại target_layer_ids (mặc định là các lớp 1, 13, 25, 37 và 49) làm ngữ cảnh.
Thay vì tạo từng token một, mô hình drafter khử nhiễu toàn bộ khối gồm block_size token bị che trong một lần truyền tiến, giống như một cửa sổ khuếch tán. Sau đó, mô hình chính xác nhận khối này trong một bước duy nhất. Meta báo cáo tốc độ giải mã nhanh hơn 3,1 lần trên RTX 5090 và 1,5-1,8 lần trên chip Apple M-series.
Truyền drafter vào generate() dưới dạng assistant_model và đặt speculation_type="dflash". Drafter phải được nạp với cùng dtype và trên cùng thiết bị với mô hình chính.
from transformers import AutoProcessor, MuseGlimmerAssistantModel, MuseGlimmerForConditionalGeneration
processor = AutoProcessor.from_pretrained("meta-models/Muse-Glimmer-30B")
model = MuseGlimmerForConditionalGeneration.from_pretrained(
"meta-models/Muse-Glimmer-30B",
device_map="auto",
)
drafter = MuseGlimmerAssistantModel.from_pretrained(
"meta-models/Muse-Glimmer-30B-assistant",
device_map="auto",
)
messages = [
{
"role": "user",
"content": [{"type": "text", "text": "Write a bash one-liner that counts lines of Python in a repo."}],
},
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
input_len = inputs["input_ids"].shape[-1]
outputs = model.generate(
**inputs,
assistant_model=drafter,
speculation_type="dflash",
max_new_tokens=256,
)
response = processor.decode(outputs[0][input_len:], skip_special_tokens=False)
print(response)Ghi chú
- Drafter cần các hidden states của mô hình chính, do đó
generateép đặtoutput_hidden_states=Truecho mô hình đích khispeculation_type="dflash". - Xem bài đăng trên blog Meta trở lại với Muse Glimmer: cục bộ, agentic, đa phương thức và mã nguồn mở! để biết thêm chi tiết và ví dụ sử dụng.
MuseGlimmerAssistantConfig
lớp transformers.MuseGlimmerAssistantConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 6656intermediate_size: int = 19968num_hidden_layers: int = 5num_attention_heads: int = 32num_key_value_heads: int = 8head_dim: int = 128rms_norm_eps: float = 1e-05rope_parameters: dict | None = Nonemax_position_embeddings: int = 131072sliding_window: int = 2048layer_types: list[str] | None = Noneattention_dropout: float | int = 0hidden_act: str = 'silu'bos_token_id: int | None = 200000eos_token_id: int | None = 200001pad_token_id: int | None = 200018block_size: int = 16mask_token_id: int = 201818target_layer_ids: list[int] | None = None )
Tham số
- hidden_size (
int, tùy chọn, mặc định là6656) — Kích thước của các biểu diễn ẩn. - intermediate_size (
int, tùy chọn, mặc định là19968) — Kích thước của các biểu diễn MLP. - num_hidden_layers (
int, tùy chọn, mặc định là5) — Số lượng lớp ẩn trong bộ giải mã Transformer. - num_attention_heads (
int, tùy chọn, mặc định là32) — Số lượng đầu attention cho mỗi lớp attention trong bộ giải mã Transformer. - num_key_value_heads (
int, tùy chọn, mặc định là8) — Đây là số lượng key_value heads cần được sử dụng để triển khai Grouped Query Attention. Nếunum_key_value_heads=num_attention_heads, mô hình sẽ sử dụng Multi Head Attention (MHA), nếunum_key_value_heads=1mô hình sẽ sử dụng Multi Query Attention (MQA), ngược lại sẽ sử dụng GQA. Khi chuyển đổi checkpoint multi-head sang checkpoint GQA, mỗi nhóm key và value head nên được xây dựng bằng cách meanpooling tất cả các head gốc trong nhóm đó. Để biết thêm chi tiết, hãy xem bài báo này. Nếu không được chỉ định, giá trị mặc định sẽ lànum_attention_heads. - head_dim (
int, tùy chọn, mặc định là128) — Kích thước chiều của đầu chú ý. Nếu là None, giá trị mặc định sẽ là hidden_size // num_attention_heads - rms_norm_eps (
float, tùy chọn, mặc định là1e-05) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa rms. - rope_parameters (
dict, tùy chọn) — Từ điển chứa các tham số cấu hình cho các embedding RoPE. Từ điển phải chứa một giá trị chorope_thetavà tùy chọn các tham số được sử dụng để mở rộng trong trường hợp bạn muốn sử dụng RoPE vớimax_position_embeddingsdài hơn. - max_position_embeddings (
int, tùy chọn, mặc định là131072) — Chiều dài chuỗi tối đa mà mô hình này có thể được sử dụng. - sliding_window (
int, tùy chọn, mặc định là2048) — Kích thước cửa sổ của cơ chế chú ý cửa sổ trượt. Nếu làNone, sẽ không áp dụng cửa sổ trượt. - layer_types (
list[str], tùy chọn) — Một danh sách ánh xạ rõ ràng từng chỉ số lớp với kiểu lớp tương ứng. Nếu không được cung cấp, danh sách này sẽ được tạo tự động dựa trên các giá trị cấu hình. - attention_dropout (
Union[float, int], tùy chọn, mặc định là0) — Tỷ lệ dropout cho các xác suất chú ý. - hidden_act (
str, tùy chọn, mặc định làsilu) — Hàm kích hoạt phi tuyến (hàm hoặc chuỗi) trong bộ giải mã. Ví dụ,"gelu","relu","silu", v.v. - bos_token_id (
int, tùy chọn, mặc định là200000) — Token id được sử dụng cho beginning-of-stream trong bảng từ vựng. - eos_token_id (
int, tùy chọn, mặc định là200001) — Token id được dùng cho end-of-stream trong bảng từ vựng. - pad_token_id (
int, tùy chọn, mặc định là200018) — Token id được sử dụng để đệm (padding) trong từ vựng. - block_size (
int, tùy chọn) — Kích thước khối của các đầu vào nhiễu sẽ được khử nhiễu. - mask_token_id (
int, tùy chọn) — Các id token mask được dùng làm đầu vào nhiễu cho mô hình. - target_layer_ids (
list[int], tùy chọn) — Các id lớp bắt đầu từ 0, trong đó các trạng thái ẩn của chúng được nối lại làm ngữ cảnh cho mô hình.
Đây là lớp cấu hình để lưu trữ cấu hình của một MuseGlimmerAssistantModel. Nó được sử dụng để khởi tạo một mô hình Muse Glimmer Assistant theo các đối số được chỉ định, xác định kiến trúc của mô hình. Khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của meta-models/Muse-Glimmer-30B-assistant
Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.
Ví dụ:
>>> from transformers import MuseGlimmerAssistantConfig, MuseGlimmerAssistantModel
>>> # Initializing a Muse Glimmer Assistant config similar to `meta-models/Muse-Glimmer-30B-assistant`.
>>> configuration = MuseGlimmerAssistantConfig(text_config)
>>> # Initializing a model from the `meta-models/Muse-Glimmer-30B-assistant` configuration.
>>> model = MuseGlimmerAssistantModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configMuseGlimmerAssistantPreTrainedModel
lớp transformers.MuseGlimmerAssistantPreTrainedModel
< source >( config: PreTrainedConfig*inputs**kwargs )
Tham số
- config (PreTrainedConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
MuseGlimmerAssistantModel
lớp transformers.MuseGlimmerAssistantModel
< source >( config: MuseGlimmerAssistantConfig )
Tham số
- config (MuseGlimmerAssistantConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.
Mô hình Muse Glimmer Assistant thô, xuất ra các hidden-states thô mà không có bất kỳ head cụ thể nào ở phía trên.
Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)
Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.
forward
< source >( noise_embeds: Tensorcontext_hidden_states: Tensorattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.DFlashCache | None = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPast or tuple(torch.Tensor)
Tham số
- noise_embeds (
torch.Tensorcó hình dạng[batch_size, config.block_size, dim]) — Embedding đầu vào cho token anchor được tạo cuối cùng và các token mask cần khử nhiễu. - context_hidden_states (
torch.Tensorcó shape[batch_size, number_of_previous_accepted_tokens, dim * len(config.target_layer_ids)]) — Trạng thái ẩn ngữ cảnh từ các id lớp được chọn của mô hình đích, được nối (concatenate) theo chiều cuối. - attention_mask (
torch.Tensorcó hình dạng[batch_size, number_of_previous_accepted_tokens + config.block_size]) — Tương tự như attention_mask thông thường, nhưng lưu ý rằng nó có độ dàinumber_of_previous_accepted_tokens + config.block_size, bởi vì Attention trước tiên sẽ nốicontext_hidden_statesvới các hidden states được suy ra từnoise_embeds, do đó các trạng thái k/v sẽ không có cùng độ dài với q_states, ngay cả trước khi gọicache.update(). Vì vậy, chiều kv_seq_len của attention mask cần bao phủ các vị trí bổ sung. - position_ids (
torch.Tensorcó hình dạng[batch_size, number_of_previous_accepted_tokens + config.block_size]) — Tương tự như position_ids thông thường, nhưng lưu ý rằng nó có độ dàinumber_of_previous_accepted_tokens + config.block_size, bởi vì Attention sẽ đầu tiên nốicontext_hidden_statesvới các hidden states được suy ra từnoise_embeds, do đó các trạng thái k/v sẽ không có cùng độ dài với q_states, ngay cả trước khi gọicache.update(). Vì vậy,position_idsvàposition_embeddingssuy ra từ nó cần bao phủ tất cả các vị trí bổ sung. - past_key_values (
~cache_utils.DFlashCache, tuỳ chọn) — Các hidden-states đã tính toán trước (key và value trong các khối self-attention và cross-attention) có thể được sử dụng để tăng tốc độ giải mã tuần tự. Điều này thường bao gồmpast_key_valuesđược trả về bởi mô hình ở một giai đoạn giải mã trước đó, khiuse_cache=Truehoặcconfig.use_cache=True.Chỉ cho phép Cache instance làm đầu vào, xem hướng dẫn kv cache của chúng tôi. Nếu không truyền
past_key_values, DynamicCache sẽ được khởi tạo theo mặc định.Mô hình sẽ xuất ra cùng định dạng cache được đưa vào làm đầu vào.
Nếu
past_key_valuesđược sử dụng, người dùng được kỳ vọng chỉ nhậpinput_idschưa được xử lý (những phần chưa có trạng thái key value quá khứ được cung cấp cho mô hình này) có hình dạng(batch_size, unprocessed_length)thay vì toàn bộinput_idscó hình dạng(batch_size, sequence_length). - use_cache (
bool, tùy chọn) — Nếu đặt thànhTrue, các trạng thái key value củapast_key_valuessẽ được trả về và có thể được sử dụng để tăng tốc quá trình giải mã (xempast_key_values).
Trả về
BaseModelOutputWithPast hoặc tuple(torch.Tensor)
Một BaseModelOutputWithPast hoặc một tuple của
torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các
thành phần khác nhau tùy thuộc vào cấu hình (MuseGlimmerAssistantConfig) và đầu vào.
Phương thức forward của MuseGlimmerAssistantModel ghi đè lên phương thức đặc biệt __call__.
Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của
Modulesau đó thay vì gọi hàm này, vì instanceModulesẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.
last_hidden_state (
torch.Tensorcó hình dạng(batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.Nếu
past_key_valuesđược sử dụng, chỉ có hidden-state cuối cùng của các chuỗi có shape(batch_size, 1, hidden_size)được xuất ra.past_key_values (
Cache, tùy chọn, được trả về khiuse_cache=Trueđược truyền vào hoặc khiconfig.use_cache=True) — Đây là một instance của Cache. Để biết thêm chi tiết, hãy xem hướng dẫn về kv cache của chúng tôi.Chứa các hidden-states đã được tính trước (key và values trong các khối self-attention và tùy chọn nếu
config.is_encoder_decoder=Truetrong các khối cross-attention) có thể được sử dụng (xem đầu vàopast_key_values) để tăng tốc độ giải mã tuần tự.hidden_states (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_hidden_states=Trueđược truyền vào hoặc khiconfig.output_hidden_states=True) — Bộ tuple củatorch.Tensor(một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng(batch_size, sequence_length, hidden_size).Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.
attentions (
tuple(torch.Tensor), tuỳ chọn, được trả về khioutput_attentions=Trueđược truyền vào hoặc khiconfig.output_attentions=True) — Tuple củatorch.Tensor(một cho mỗi lớp) có hình dạng(batch_size, num_heads, sequence_length, sequence_length).Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.