importar importlib.util, os, Shutil como _sh si importlib.util.find_spec(“tunix”) es Ninguno: print(“Instalar el ecosistema Tunix + JAX; esto lleva ~5-8 minutos…” %pip install -q ipywidgets tensorboardX transformadores grano nest_asyncio %pip install -q datasets huggingface_hub “numpy>2” %pip install -q tensorflow tensorflow_datasets %pip install -q git+https://github.com/jax-ml/jax %pip install -q git+https://github.com/google/tunix %pip install -q git+https://github.com/google/qwix %pip uninstall -q flax -y %pip install -q git+https://github.com/google/flax %pip uninstall -q wandb -y print(“\n\n✅ Instalación realizada. El El tiempo de ejecución se REINICIARÁ ahora.”) print(“👉 Después de reiniciar, EJECUTE ESTA CÉLULA OTRA VEZ para comenzar el entrenamiento.\n”) os.kill(os.getpid(), 9) import getpass, functools, json, reimporte numpy como np os.environ[“WANDB_MODE”] = “deshabilitado” os.environ[“TOKENIZERS_PARALLELISM”] = “falso” sistema operativo.environ[“TF_CPP_MIN_LOG_LEVEL”] = “3” HF_TOKEN = os.environ.get(“HF_TOKEN”) si no es HF_TOKEN: intente: desde google.colab importar datos de usuario HF_TOKEN = userdata.get(“HF_TOKEN”) excepto Excepción: HF_TOKEN = getpass.getpass(“Token Hugging Face (necesita acceso a licencia de Gemma): “) os.environ[“HF_TOKEN”] = HF_TOKEN o “” importar nest_asyncio; nest_asyncio.apply() importa tensorflow como tf; tf.config.set_visible_devices([]”GPU”) importar jax, jax.numpy como jnp, optax, grain, qwix desde flax importar nnx desde orbax importar checkpoint como ocp desde huggingface_hub importar snapshot_download, iniciar sesión desde conjuntos de datos importar load_dataset desde tunix.generate importar sampler como sampler_lib desde tunix.generate importar tokenizer_adapter como tokenizer_lib desde tunix.models.gemma3 importar modelo como gemma_lib desde tunix.models.gemma3 importar params_safetensors como params_safetensors_lib desde tunix.models.gemma3 importar parámetros como gemma_params desde tunix.rl importar rl_cluster como rl_cluster_lib desde tunix.rl.grpo.grpo_learner importar GRPOConfig, GRPOLearner desde tunix.rl.rollout importar base_rollout desde tunix.sft importar metrics_logger si HF_TOKEN: login(token=HF_TOKEN) dispositivos = jax.devices() print(“JAX backend :”, jax.default_backend(), “|”, len(dispositivos), “dispositivo(s):”, dispositivos) IS_GPU = _sh. Which(“nvidia-smi”) no es Ninguno si IS_GPU y jax.default_backend() == “cpu”: print(“⚠️ Tiempo de ejecución de GPU pero JAX solo ve la CPU. Vuelva a ejecutar `pip install -U \”jax[cuda12]\”` ” “y reiniciar o cambiar a un tiempo de ejecución de TPU.”) MODEL_ID = “google/gemma-3-1b-it” RANK, ALPHA = 32, 32.0 MAX_PROMPT_LENGTH = 256 TOTAL_GENERATION_STEPS = 512 NUM_GENERATION = 2 NUM_ITERATION = 1 BETA = 0.08 EPSILON = 0.2 TEMPERATURA, TOP_P, TOP_K = 0.9, 1.0, 50 MAX_STEPS = 100 TRAIN_LIMIT = MAX_STEPS NUM_TEST = 16 APRENDIZAJE_RATE, B1, B2, WEIGHT_DECAY = 3e-6, 0.9, 0.99, 0.1 WARMUP_STEPS, MAX_GRAD_NORM = int(0.1 * MAX_STEPS), 0.1 CKPT_DIR, TB_DIR = “/content/ckpts/”, “/content/tb/grpo” N = jax.device_count() MESH = [(N, 1), (“fsdp”, “tp”)]
malla = jax.make_mesh(*MESH, axis_types=(jax.sharding.AxisType.Auto,) * 2)
malla = jax.make_mesh(*MESH, axis_types=(jax.sharding.AxisType.Auto,) * 2)