XVERSE-MoE-A36B: большая языковая модель на архитектуре MoE.XVERSE-MoE-A36 – м…
XVERSE-MoE-A36 – мультиязычная LLM, разработанная с нуля Shenzhen Yuanxiang Technology. Модель основана на архитектуре Mixture-of-Experts, имеет 255 млрд. параметров, из которых 36 млрд. активируются в процессе работы.
XVERSE-MoE-A36B предназначена для решения задач: генерация текста, машинный перевод, анализ тональности, реферирование текста, вопрос-ответ, применение в интеллектуальных системах обслуживания клиентов, образовательных помощниках и анализе данных.
Модель использует структуру decoder-only Transformer, где слой Feedforward Network разделен на специализированные экспертные слои.
Отличительной особенностью модели является использование набора общих и не общих экспертов, каждый из которых составляет 1/4 от размера стандартного FFN. Общие эксперты всегда активны во время вычислений, а не общие – активируются выборочно маршрутизатором.
Для обучения модели использовался массив данных на 40 языках, включая китайский, английский, русский и испанский. В процессе обучения использовалась стратегия динамического изменения набора данных с изменением скорости обучения (LR).
Тестирование модели проводилось на наборах данных MMLU, C-Eval, CMMLU, RACE-M, PIQA, GSM8K, MATH, MBPP и HumanEval.
Результаты показывают, что XVERSE-MoE-A36B превосходит другие модели MoE с открытым исходным кодом по производительности и эффективности.
⚠️ Важно! Несмотря на название, модель – 255B, ее физический размер ~ 512 Gb
# Clone repository:
git clone https://github.com/xverse-ai/XVERSE-MoE-A36B
cd XVERSE-MoE-A36B
# Install the dependencies:
pip install -r requirements.txt
# Inference with Transformers:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("xverse/XVERSE-MoE-A36B")
model = AutoModelForCausalLM.from_pretrained("xverse/XVERSE-MoE-A36B", trust_remote_code=True, torch_dtype=torch.bfloat16, device_map='auto')
model = model.eval()
inputs = tokenizer('Attraction of Omsk: The Forbidden City', return_tensors='pt').input_ids
inputs = inputs.cuda()
generated_ids = model.generate(inputs, max_new_tokens=70, eos_token_id=tokenizer.eos_token_id, repetition_penalty=1.1)
print(tokenizer.batch_decode(generated_ids, skip_special_tokens=True))
# Inference with WebUI:
python chat_demo.py --port='port' --model_path='/path/to/model/' --tokenizer_path='/path/to/tokenizer/'