par ibm-research
Open source · 706k downloads · 18 likes
PowerMoE 3b est un modèle de langage avancé basé sur une architecture sparse Mixture-of-Experts (sMoE) comptant 3 milliards de paramètres. Grâce à son mécanisme d'activation sélective, il mobilise efficacement 800 millions de paramètres par token, offrant des performances comparables à des modèles denses deux fois plus grands. Entraîné sur un mélange de données open-source et propriétaires, il excelle dans des tâches variées comme le choix multiple en langage naturel, la génération de code et le raisonnement mathématique. Ce modèle se distingue par son efficacité computationnelle et sa capacité à rivaliser avec des architectures plus lourdes tout en réduisant les coûts d'inférence. Son approche innovante en fait un outil puissant pour les applications nécessitant à la fois précision et rapidité.
PowerMoE-3B is a 3B sparse Mixture-of-Experts (sMoE) language model trained with the Power learning rate scheduler. It sparsely activates 800M parameters for each token. It is trained on a mix of open-source and proprietary datasets. PowerMoE-3B has shown promising results compared to other dense models with 2x activate parameters across various benchmarks, including natural language multi-choices, code generation, and math reasoning. Paper: https://arxiv.org/abs/2408.13359
Note: Requires installing HF transformers from source.
This is a simple example of how to use PowerMoE-3b model.
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # or "cpu"
model_path = "ibm/PowerMoE-3b"
tokenizer = AutoTokenizer.from_pretrained(model_path)
# drop device_map if running on CPU
model = AutoModelForCausalLM.from_pretrained(model_path, device_map=device)
model.eval()
# change input text as desired
prompt = "Write a code to find the maximum value in a list of numbers."
# tokenize the text
input_tokens = tokenizer(prompt, return_tensors="pt")
# transfer tokenized inputs to the device
for i in input_tokens:
input_tokens[i] = input_tokens[i].to(device)
# generate output tokens
output = model.generate(**input_tokens, max_new_tokens=100)
# decode output tokens into text
output = tokenizer.batch_decode(output)
# loop over the batch to print, in this example the batch size is 1
for i in output:
print(i)