Training Adaptable Agents for Live Streaming
Listen to the summary
Uses a voice available on your device
Audio options
On this page 5 sections
Related concepts 7 concepts
Key Takeaways
- The HAT method achieves an average score of 94.8 on the Live-Stream QA benchmark, outperforming the base model score of 80.3 and the strongest general LLM score of 93.0.
- The approach prevents the 7.7-point performance drop in instruction following typically seen with traditional fine-tuning, maintaining a score of 83.5 on IFEval.
- The system supports real-time deployment on a single NVIDIA H20 GPU with a P50 latency of 3.4 seconds and a P95 latency of 8.1 seconds.
- The process relies on a human-in-the-loop workflow for diagnostics and final approval of model edits rather than full autonomy.
Summary & Methodology Analysis
The researchers developed Harness Evolution to address performance degradation caused by traditional supervised fine-tuning (SFT), which is the process of further training a pre-trained model on specific datasets. By decoupling the execution environment, which includes system prompts and tool schemas, from the core policy model, the team avoids overfitting to static configurations. They use Harness-State Augmentation to introduce controlled variations during training, ensuring the model remains robust when marketing strategies or campaign rules change. The policy model used is the Qwen3.6-35B-A3B, a compact model selected to meet strict latency requirements.
Interactive System Flowchart
Illustrative Implementation
A short sketch of the paper's core idea, not the authors' own code.
# Illustrative sketch (not from the paper)
import torch
from torch import nn, optim
# frozen policy model (e.g., Qwen3.6-35B-A3B)
policy = torch.load('qwen3.6-35b-a3b.pt')
policy.eval()
def augment_harness(harness):
"""Apply task‑preserving perturbations to identifiers, content, schemas, prompts, hooks."""
# simple example: rename skill keys
harness['skills'] = {f"skill_{i}": v for i, v in enumerate(harness['skills'].values())}
return harness
def hsa_sft(teacher_data, harness):
"""Stage 1 supervised fine‑tuning on augmented harness configurations."""
optimizer = optim.Adam(policy.parameters(), lr=1e-5)
loss_fn = nn.CrossEntropyLoss()
for inputs, targets in teacher_data:
outputs = policy(inputs)
loss = loss_fn(outputs, targets)
loss.backward()
optimizer.step()
optimizer.zero_grad()
def general_opd(general_data):
"""Stage 2 on‑policy distillation to recover instruction‑following ability."""
# placeholder: same loop as SFT but using the current policy as teacher
pass
def hsa_rl(env):
"""Stage 3 reinforcement learning in simulated augmented environments."""
optimizer = optim.Adam(policy.parameters(), lr=1e-6)
for episode in range(10):
state = env.reset()
done = False
while not done:
action = policy(state).argmax()
next_state, reward, done, _ = env.step(action)
# simple policy‑gradient style update (illustrative)
logp = torch.log_softmax(policy(state), dim=-1)[action]
loss = -reward * logp
loss.backward()
optimizer.step()
optimizer.zero_grad()
state = next_state
# Example usage (data pipelines omitted for brevity)
base_harness = {'skills': {'greet': '...'}, 'tools': {}, 'hooks': {}}
aug_harness = augment_harness(base_harness)
# teacher_data, general_data, and env would be supplied by the training pipeline// Illustrative sketch (not from the paper)
const torch = require('torch-js'); // placeholder import
// frozen policy model (e.g., Qwen3.6-35B-A3B)
let policy = torch.load('qwen3.6-35b-a3b.pt');
policy.eval();
function augmentHarness(harness) {
// Apply task‑preserving perturbations to identifiers, content, schemas, prompts, hooks
const renamed = {};
Object.values(harness.skills).forEach((v, i) => {
renamed[`skill_${i}`] = v;
});
harness.skills = renamed;
return harness;
}
function hsaSft(teacherData, harness) {
// Stage 1 supervised fine‑tuning on augmented harness configurations
const optimizer = new torch.optim.Adam(policy.parameters(), { lr: 1e-5 });
const lossFn = torch.nn.CrossEntropyLoss();
for (const [inputs, targets] of teacherData) {
const outputs = policy.forward(inputs);
const loss = lossFn(outputs, targets);
loss.backward();
optimizer.step();
optimizer.zeroGrad();
}
}
function generalOpd(generalData) {
// Stage 2 on‑policy distillation (placeholder)
// Would reuse the same loop as SFT but with policy as teacher
}
function hsaRl(env) {
// Stage 3 reinforcement learning in simulated augmented environments
const optimizer = new torch.optim.Adam(policy.parameters(), { lr: 1e-6 });
for (let episode = 0; episode < 10; episode++) {
let state = env.reset();
let done = false;
while (!done) {
const logits = policy.forward(state);
const action = logits.argmax();
const { nextState, reward, done: stepDone } = env.step(action);
const logProb = torch.logSoftmax(logits, -1).gather(action);
const loss = torch.neg(torch.mul(reward, logProb));
loss.backward();
optimizer.step();
optimizer.zeroGrad();
state = nextState;
done = stepDone;
}
}
}
// Example usage (data pipelines omitted for brevity)
const baseHarness = { skills: { greet: '...' }, tools: {}, hooks: {} };
const augHarness = augmentHarness(baseHarness);
// teacherData, generalData, and env would be provided by the training pipeline
Cross-Examination & FAQs
A deeper dive clarifying mechanics, constraints, and baseline evaluations.
Q1. What is the primary goal of this research?
The goal is to enable digital avatar agents to adapt to changing live-stream rules and marketing strategies without sacrificing performance or instruction-following capabilities.
Q2. How does this method handle real-time constraints?
It uses a compact policy model, specifically the Qwen3.6-35B-A3B, and optimizes deployment on a single NVIDIA H20 GPU to meet strict latency requirements.
Q3. Does the system operate without human intervention?
No, it is a human-in-the-loop system where AI clusters failures and proposes edits, but a developer must confirm the plan and decide whether to proceed.
Q4. How does the HAT method compare to traditional Fixed-Harness SFT?
Traditional Fixed-Harness SFT causes a 7.7-point drop in IFEval scores, whereas the HAT method maintains an IFEval score of 83.5.
Q5. What benchmarks were used to validate the model?
The researchers utilized the Live-Stream QA benchmark, the Harness-Variant QA benchmark, and the IFEval benchmark.
Q6. What are the specific latency figures for the system?
The system reports a P50 latency of 3.4 seconds and a P95 latency of 8.1 seconds on a single NVIDIA H20 GPU.
Q7. How does the model perform on the Harness-Variant QA benchmark?
The HAT-trained model achieves a score of 94.6 compared to the base model's score of 75.4.
Q8. What specific model is used as the underlying policy?
The researchers use the Qwen3.6-35B-A3B model.
Q9. Does the paper specify the total number of parameters for the policy model?
The paper does not specify the exact total parameter count beyond the designation Qwen3.6-35B-A3B.