Edit model card

Bitnet-LLama3-8B-Now2B 🚀

Este modelo es una variante optimizada del Llama3 utilizando la arquitectura BitNet, lo que reduce los pesos a los valores -1, 0, y 1 para mejorar la eficiencia en el cómputo sin perder precisión.

Modelo Base 🦙

Arquitectura 🔧

El modelo transforma las capas lineales de Llama3 en capas BitLinear, aprovechando las siguientes técnicas de cuantización:

  • Cuantización de activaciones: Escala a ±127
  • Cuantización de pesos: Escala a ±1

Especificaciones Técnicas 📋

  • Dimensiones: 768
  • Capas: 6
  • Contexto: 256 tokens
  • Tamaño intermedio: 1024
  • Número de cabezas de atención: 6

Dataset 📚

El modelo fue entrenado usando el dataset Cosmopedia-100k-pretrain, que contiene una variedad de datos de texto.

Entrenamiento ⚙️

El modelo fue entrenado con la siguiente configuración:

  • Lote: 16
  • Tasa de aprendizaje: 1.5e-4
  • Épocas: 2
  • Acumulación de gradientes: 2 pasos
  • Decaimiento de pesos: 0.01
  • Precisión Mixta: FP16

Monitoreo 📊

El proceso de entrenamiento fue monitoreado usando Weights & Biases.

Uso del Modelo 💻

Para usar este modelo, puedes cargarlo desde Hugging Face con el siguiente código:

import torch
import wandb
import logging
import coloredlogs
from torch import nn
from datasets import load_dataset
from huggingface_hub import login
from huggingface_hub import create_repo, HfApi
from transformers import (AutoTokenizer, AutoConfig, LlamaForCausalLM, DataCollatorForLanguageModeling, Trainer, TrainingArguments)

from utils.utils import count_parameters

# Configuración de logging
coloredlogs.install(level='INFO', fmt='%(asctime)s - %(levelname)s - %(message)s', logger=logging.getLogger())
logger = logging.getLogger(__name__)

# Iniciar sesión en Hugging Face y Weights & Biases
wandb.login(key="TU_WANDB_TOKEN")
login(token="TU_HF_TOKEN")

# Cargar el dataset y el tokenizer
data = load_dataset("abideen/Cosmopedia-100k-pretrain")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B")

# Configuración del modelo
config = AutoConfig.from_pretrained(
    "meta-llama/Meta-Llama-3-8B",
    vocab_size=len(tokenizer),
    n_ctx=256,
    bos_token_id=tokenizer.bos_token_id,
    eos_token_id=tokenizer.eos_token_id,
    hidden_size=768,
    num_attention_heads=6,
    num_hidden_layers=6,
    intermediate_size=1024,
)

# Crear el modelo Llama y convertirlo a BitNet
model = LlamaForCausalLM(config)
convert_to_bitnet(model, copy_weights=False)

# Configuración del entrenamiento
args = TrainingArguments(
    output_dir="./Bitnet-Nous-Llama3-225M",
    per_device_train_batch_size=16,
    logging_steps=100,
    gradient_accumulation_steps=2,
    num_train_epochs=2,
    weight_decay=0.01,
    warmup_steps=10,
    learning_rate=1.5e-4,
    fp16=True,
    report_to="wandb",
)

# Inicializar el entrenador
trainer = Trainer(
    model=model,
    tokenizer=tokenizer,
    args=args,
    train_dataset=data["train"],
    data_collator=DataCollatorForLanguageModeling(tokenizer, mlm=False),
)

# Iniciar el entrenamiento
trainer.train()

Contribuciones 🛠️

Este modelo forma parte de un experimento para optimizar arquitecturas mediante BitNet. Si tienes alguna mejora o sugerencia, ¡no dudes en contribuir! 😊

Si tienes preguntas, puedes contactarme en [email protected].

Downloads last month
20
Safetensors
Model size
225M params
Tensor type
F32
·
Inference API
Unable to determine this model's library. Check the docs .

Model tree for ejbejaranos/Bitnet-LLama3-8B-Now2B

Finetuned
(145)
this model

Dataset used to train ejbejaranos/Bitnet-LLama3-8B-Now2B