Close Menu
    Facebook X (Twitter) Instagram
    Cloud Tech ReportCloud Tech Report
    • Home
    • Crypto News
      • Bitcoin
      • Ethereum
      • Altcoins
      • Blockchain
      • DeFi
    • AI News
    • Stock News
    • Learn
      • AI for Beginners
      • AI Tips
      • Make Money with AI
    • Reviews
    • Tools
      • Best AI Tools
      • Crypto Market Cap List
      • Stock Market Overview
      • Market Heatmap
    • Contact
    Cloud Tech ReportCloud Tech Report
    Home»AI News»AllenAI Open Instruct Tulu 3 Post-Training with SFT, DPO, RLVR, GRPO, and Verifier-Based Evaluation
    AI News

    AllenAI Open Instruct Tulu 3 Post-Training with SFT, DPO, RLVR, GRPO, and Verifier-Based Evaluation

    August 13, 2026
    Facebook Twitter Pinterest Telegram LinkedIn Tumblr WhatsApp Email
    AllenAI Open Instruct Tulu 3 Post-Training with SFT, DPO, RLVR, GRPO, and Verifier-Based Evaluation
    Share
    Facebook Twitter LinkedIn Pinterest Telegram Email
    murf


    print(“\n” + “=” * 90); print(“STAGE 3 — RLVR / GRPO”); print(“=” * 90)
    grpo_cfg = types.SimpleNamespace(loss_fn=GRPOLossType.dapo, clip_lower=cfg.clip_lower,
    clip_higher=cfg.clip_higher, kl_estimator=cfg.kl_estimator)
    _gen_eos = getattr(getattr(model, “generation_config”, None), “eos_token_id”, None)
    _terms = {tok.eos_token_id, tok.pad_token_id}
    _terms |= set(_gen_eos) if isinstance(_gen_eos, (list, tuple)) else {_gen_eos}
    TERMINATORS = torch.tensor(sorted(t for t in _terms if t is not None), device=DEV)
    def token_logps(seq, attn, temperature, grad=True):
    pos = (attn.cumsum(-1) – 1).clamp(min=0)
    ctx = torch.enable_grad() if grad else torch.no_grad()
    with ctx, amp():
    logits = model(input_ids=seq, attention_mask=attn, position_ids=pos).logits
    return per_token_logps_fn(logits / temperature, seq)
    def rollout(batch_rows):
    G = cfg.samples_per_prompt
    ids = [r[“input_ids_prompt”] for r in batch_rows]
    P = max(len(x) for x in ids)
    pin = torch.tensor([[tok.pad_token_id] * (P – len(x)) + x for x in ids], device=DEV)
    pmask = torch.tensor([[0] * (P – len(x)) + [1] * len(x) for x in ids], device=DEV)
    model.eval()
    with torch.no_grad(), amp(), with_cache():
    seq = model.generate(input_ids=pin, attention_mask=pmask, do_sample=True,
    temperature=cfg.grpo_temperature, top_p=1.0, top_k=0,
    max_new_tokens=cfg.grpo_max_new, num_return_sequences=G,
    pad_token_id=tok.pad_token_id)
    model.train()
    resp = seq[:, P:]
    is_term = torch.isin(resp, TERMINATORS)
    first = torch.where(is_term.any(1), is_term.float().argmax(1),
    torch.full((resp.shape[0],), resp.shape[1] – 1, device=DEV))
    idx = torch.arange(resp.shape[1], device=DEV).unsqueeze(0)
    resp_mask = (idx <= first.unsqueeze(1)).long()
    full_mask = torch.cat([torch.zeros(seq.shape[0], P, dtype=torch.long, device=DEV), resp_mask], 1)
    attn = torch.cat([pmask.repeat_interleave(G, 0), resp_mask], 1)
    texts = tok.batch_decode(resp, skip_special_tokens=True)
    gts = [r[“ground_truth”] for r in batch_rows for _ in range(G)]
    srcs = [r[“dataset”] for r in batch_rows for _ in range(G)]
    scores = verify_batch(texts, gts, srcs)
    per_prompt = scores.reshape(-1, G)
    mean_g = np.repeat(per_prompt.mean(-1), G, 0)
    if cfg.adv_norm == “standard”:
    adv = (scores – mean_g) / (np.repeat(per_prompt.std(-1), G, 0) + 1e-8)
    else:
    adv = scores – mean_g
    adv_t = torch.tensor(adv, device=DEV, dtype=torch.float32).unsqueeze(1).expand_as(full_mask.float())
    return seq, attn, full_mask, adv_t, scores, texts
    opt, sched, scaler = new_opt(cfg.grpo_lr, cfg.grpo_iters * cfg.grpo_inner_epochs)
    order = list(range(len(rlvr_ds))); random.shuffle(order)
    for it_i in range(cfg.grpo_iters):
    rows = [rlvr_ds[order[(it_i * cfg.prompts_per_iter + j) % len(rlvr_ds)]]
    for j in range(cfg.prompts_per_iter)]
    seq, attn, mask, adv, scores, texts = rollout(rows)
    with torch.no_grad():
    old_lp = torch.cat([token_logps(seq[i:i + cfg.grpo_micro_bs], attn[i:i + cfg.grpo_micro_bs],
    cfg.grpo_temperature, grad=False)
    for i in range(0, seq.shape[0], cfg.grpo_micro_bs)])
    with model.disable_adapter():
    ref_lp = torch.cat([token_logps(seq[i:i + cfg.grpo_micro_bs], attn[i:i + cfg.grpo_micro_bs],
    cfg.grpo_temperature, grad=False)
    for i in range(0, seq.shape[0], cfg.grpo_micro_bs)])
    n_chunks = math.ceil(seq.shape[0] / cfg.grpo_micro_bs)
    for ep in range(cfg.grpo_inner_epochs):
    stats = {“pg”: 0.0, “kl”: 0.0, “clip”: 0.0}
    for i in range(0, seq.shape[0], cfg.grpo_micro_bs):
    sl = slice(i, i + cfg.grpo_micro_bs)
    new_lp = token_logps(seq[sl], attn[sl], cfg.grpo_temperature, grad=True)
    new_lp_, old_lp_, ref_lp_ = new_lp[:, :-1], old_lp[sl][:, :-1], ref_lp[sl][:, :-1]
    m_, a_ = mask[sl][:, 1:], adv[sl][:, 1:]
    ratio = torch.exp((new_lp_ – old_lp_).clamp(-20, 20))
    pg, clipfrac, kl = compute_grpo_loss(new_lp_, ratio, a_, ref_lp_, grpo_cfg,
    torch.ones_like(ratio))
    loss = masked_mean(pg + cfg.grpo_kl_beta * kl, m_) / n_chunks
    scaler.scale(loss).backward()
    with torch.no_grad():
    stats[“pg”] += masked_mean(pg.detach(), m_).item() / n_chunks
    stats[“kl”] += masked_mean(kl.detach(), m_).item() / n_chunks
    stats[“clip”] += masked_mean(clipfrac.detach(), m_).item() / n_chunks
    del new_lp, ratio, pg, kl
    step_opt(opt, sched, scaler)
    if DEV == “cuda”:
    torch.cuda.empty_cache()
    print(f” grpo iter {it_i+1}/{cfg.grpo_iters} ep{ep+1} reward {scores.mean():.3f} ”
    f”(solved {int(scores.sum())}/{len(scores)}) pg {stats[‘pg’]:+.4f} ”
    f”kl {stats[‘kl’]:.4f} clipfrac {stats[‘clip’]:.3f}”)
    print(“\n sample rollout ->”, textwrap.shorten(texts[0].replace(“\n”, ” “), 220))
    rlvr_acc = evaluate(“after-rlvr”, eval_rows)
    print(“\n” + “=” * 90)
    print(f”{‘stage’:<14}{‘verifier acc’:>14}”)
    for name, val in [(“base”, f”{base_acc:.3f}”), (“sft”, f”{sft_acc:.3f}”),
    (“dpo”, f”{dpo_acc:.3f}”), (“rlvr”, f”{rlvr_acc:.3f}”)]:
    print(f”{name:<14}{val:>14}”)
    print(“=” * 90)
    OUT = “/content/tulu-mini” if os.path.isdir(“/content”) else “./tulu-mini”
    merged = model.merge_and_unload()
    merged.save_pretrained(OUT); tok.save_pretrained(OUT)
    print(f”merged checkpoint -> {OUT} (equivalent to `python open_instruct/merge_lora.py`)”)



    Source link

    notion
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email

    Related Posts

    With a feel for physics, AI models simulate a wider range of real-world scenarios | MIT News

    August 12, 2026

    OpenAI launches GPT-5.6-Cyber with reduced refusals, 95% completion on advanced cybersecurity tasks

    August 11, 2026

    Stanford Evo 2 AI model generates phages against E. coli

    August 10, 2026

    Meet Shepherd: An Open-Source Python Substrate That Lets Meta-Agents Fork, Replay, and Revert Any Agent Run

    August 9, 2026

    The benefits of medical AI assistance vary based on user expertise | MIT News

    August 8, 2026

    No cloud, no GPUs, no problem: Liquid AI's new model LFM2.5-2.6B brings powerful AI agents to devices as small as a Raspberry Pi

    August 7, 2026
    coinbase
    Latest Posts

    Metaplanet Moves $250M in Bitcoin as Paper Loss Swells to $1.4B

    August 12, 2026

    Strategy’s $4.6 billion cash buffer gives it almost 3 years before Bitcoin sales create real stress

    August 12, 2026

    AAVE Price Prediction: Whales Are Quietly Loading Longs But Bears Still Own This Chart

    August 12, 2026

    Vitalik Buterin Updates Ethereum Roadmap With Quantum Security Focus

    August 12, 2026

    Voya Financial (VOYA) Q2 2026 Earnings Call Transcript

    August 12, 2026
    livechat
    LEGAL INFORMATION
    • Privacy Policy
    • Terms Of Service
    • Social Media Disclaimer
    • DMCA Compliance
    • Anti-Spam Policy
    Top Insights

    AllenAI Open Instruct Tulu 3 Post-Training with SFT, DPO, RLVR, GRPO, and Verifier-Based Evaluation

    August 13, 2026

    Laziest Ways To Make Money With AI In 2026

    August 13, 2026
    bybit
    Facebook X (Twitter) Instagram Pinterest
    © 2026 CloudTechReport.com - All rights reserved.

    Type above and press Enter to search. Press Esc to cancel.

    bitcoin
    Bitcoin (BTC) $ 63,382.00
    ethereum
    Ethereum (ETH) $ 1,875.91
    tether
    Tether (USDT) $ 0.999163
    bnb
    BNB (BNB) $ 610.06
    usd-coin
    USDC (USDC) $ 0.999579
    xrp
    XRP (XRP) $ 1.00
    solana
    Solana (SOL) $ 75.59
    tron
    TRON (TRX) $ 0.335952
    staked-ether
    Lido Staked Ether (STETH) $ 2,265.05
    figure-heloc
    Figure Heloc (FIGR_HELOC) $ 1.04