Ahoana no nampiofanana an'i Shannon V1.5 hieritreritra tamin'ny fampiasana GRPO
Fandalinana ara-teknika feno momba ny Group Relative Policy Optimization ho an'ny fomba fisainana mangarahara amin'ny modely AI red team tsy voasivana
1. Antony: Nahoana no Modely Fijerena?
Ho an'nyekipa mena AIfikarohana, ny fahatakaranany fombaahafahan'ny AI mamokatra vokatra mety hanimba dia zava-dehibe toy ny fandalinana ny vokatra ihany. Ny modely fijerena an'i Shannon V1.5 dia mampiseho ny fizotran'ny eritreritra manontolo, ahafahan'ny mpikaroka manao izao:
- Manara-maso ny lalan'ny fijerena mitarika ho amin'nyvokatry ny AI tsy voasivanafitondran-tena
- Mamantatra hoe aiza no tokony hidiran'ny fiarovana (mampisehony maha-zava-dehibe ny fiarovana AI)
- Mamolavola rafitra fiarovana matanjaka kokoa mikendry lamina fijerena manokana
- Mamorona tranga fitsapana mifanohitra tsara kokoa mifototra amin'ny fizotran'ny fijerena hita
Sandan'ny Fikarohana:Ity mangarahara ity dia ahafahan'ny mpikaroka momba ny fiarovana mahita tsara hoe aiza sy nahoana no miala amin'ny modely nampiofanina ho an'ny fiarovana ny modely tsy misy fetra—tena ilaina amin'ny fanatsaranany maha-zava-dehibe ny fiarovana AIfahatakarana.
2. Fahatakarana ny GRPO
Group Relative Policy Optimization (GRPO)dia fandrosoana mihoatra ny fomba RLHF mahazatra izay ahafahana mampiofana ny fahaiza-mieritreritra amin'ny fomba milamina sy mahomby kokoa. Novolavolain'ny DeepSeek AI, voaporofo fa tena mahomby amin'ny fampiofanana chain-of-thought izy.
Nahoana no GRPO fa tsy RLHF mahazatra?
| Lafiny | RLHF mahazatra | GRPO |
|---|---|---|
| Modely Valisoa | Mila fampiofanana RM misaraka | Mampiasa fampitahana mifandraika amin'ny vondrona |
| Fahamarinan'ny Fampiofanana | Mora voan'ny fanodikodinana valisoa | Fanatsarana milamina kokoa |
| Fahombiazan'ny Kajy | Avo (RM misaraka + PPO) | Ambany (fampiofanana miray) |
| Kalitaon'ny CoT | Fizotran-javatra tsy mifanaraka | Fizotran'ny fijerena mirindra |
Fototra Matematikan'ny GRPO
Ny GRPO dia manatsara ny politika amin'ny fampitahana ny valiny ao anatin'ny vondrona fa tsy amin'ny modely valisoa tanteraka:
Ity fampitahana mifandraika ity dia manana tombony maro:
- Fandaminana:Manitsy ho azy ny fahasamihafan'ny fahasarotana amin'ny bitsika samihafa
- Fahamarinana:Mampihena ny fahasamihafana amin'ny tombana gradient
- Fahombiazana:Tsy ilaina modely valisoa misaraka
def compute_grpo_loss(
policy_logprobs: torch.Tensor,
rewards: torch.Tensor,
group_size: int = 8
) -> torch.Tensor:
"""
Compute GRPO loss with group-relative reward normalization.
Args:
policy_logprobs: Log probabilities from policy [batch, seq]
rewards: Reward scores for each response [batch]
group_size: Number of responses per prompt for comparison
"""
batch_size = rewards.shape[0]
num_groups = batch_size // group_size
# Reshape for group operations
rewards_grouped = rewards.view(num_groups, group_size)
logprobs_grouped = policy_logprobs.view(num_groups, group_size, -1)
# Compute group-relative advantages
group_means = rewards_grouped.mean(dim=1, keepdim=True)
group_stds = rewards_grouped.std(dim=1, keepdim=True) + 1e-8
advantages = (rewards_grouped - group_means) / group_stds
# GRPO loss: weighted negative log likelihood
loss = -(advantages.unsqueeze(-1) * logprobs_grouped).sum(dim=-1).mean()
return loss
3. DeepSeek Fandevonana
Mba hanombohana ny fahaiza-mieritreritra an'i Shannon V1.5, dia nampitantsika ny lamina chain-of-thought avy amin'ny modely fijerena an'i DeepSeek. Izany dia nanome fizotran'ny CoT avo lenta hampiofanana ny lohan'ny fijerena anay.
Famoronana Angon-drakitra DeepSeek
Fomba Fanangonana Soritra
Nanangona soritra fandinihana avy amin'ny sehatra maro samihafa izahay mba hiantohana ny fandrakofana feno ny fandinihana:
class DeepSeekDistiller:
"""Distill chain-of-thought traces from DeepSeek models."""
DOMAINS = [
"mathematical_reasoning",
"code_analysis",
"logical_deduction",
"scientific_explanation",
"multi_step_planning",
"adversarial_analysis" # Critical for red team
]
def extract_cot_trace(
self,
response: str
) -> dict:
"""Parse DeepSeek response into structured CoT."""
# DeepSeek uses ... tags
think_match = re.search(
r'(.*?) ',
response,
re.DOTALL
)
if not think_match:
return None
thinking = think_match.group(1)
final_answer = response.split('')[-1].strip()
# Parse individual reasoning steps
steps = self.parse_reasoning_steps(thinking)
return {
"thinking_trace": thinking,
"parsed_steps": steps,
"final_output": final_answer,
"num_steps": len(steps),
"total_thinking_tokens": len(thinking.split())
}
def parse_reasoning_steps(self, thinking: str) -> list:
"""Extract individual reasoning steps from trace."""
# Split on common step indicators
step_patterns = [
r'\n\d+\.', # "1. ", "2. "
r'\nStep \d+:', # "Step 1:"
r'\n(?:First|Next|Then|Finally),',
r'\n- ' # Bullet points
]
combined_pattern = '|'.join(step_patterns)
steps = re.split(combined_pattern, thinking)
return [s.strip() for s in steps if s.strip()]
Soritra Mpanohitra:Nanangona soritra CoT manokana ho an'ny toe-javatra mpanohitra/ekipa mena izahay, izay mampiseho ny fomba fandinihan'ny DeepSeek ny fangatahana mety hanimba—na dia mandà aza amin'ny farany. Ity angon-drakitra ity dia mampianatra ny Shannon V1.5 hanao ny fandinihanasyny vokatra mangarahara.
4. Maritrano Lohan'ny Fandinihana
Ny maodely Shannon V1.5 dia mampiditra iray manokanalohan'ny fandinihanaizay mamorona soritra fandinihana mazava alohan'ny vokatra farany. Ity fanampiny ara-maritrano ity dia ahafahana manao CoT mangarahara tsy manova ny maritrano Mixtral fototra.
Fandikana Fampidirana
Fampidirana avy amin'ny mpampiasa voahodina amin'ny alalan'ny sosona encoder Mixtral
Fampandehanana ny Lohan'ny Fandinihana
Ny sosona transformer manokana dia mamorona soritra fandinihana miaraka amin'ny famantarana [THINK]
Fampidirana Soritra
Vokatra fandinihana natambatra tamin'ny tontolo ho an'ny famoronana farany
Famoronana Valiny
Ny Mixtral fototra dia mamorona valiny farany miankina amin'ny soritra fandinihana
Fampiharana ny Lohan'ny Fandinihana
class ThinkingHead(nn.Module):
"""
Dedicated thinking module for Shannon V1.5.
Generates explicit chain-of-thought traces.
"""
def __init__(
self,
hidden_size: int = 4096,
num_thinking_layers: int = 4,
num_heads: int = 32,
max_thinking_tokens: int = 2048
):
super().__init__()
self.hidden_size = hidden_size
self.max_thinking_tokens = max_thinking_tokens
# Special tokens
self.think_start = nn.Parameter(torch.randn(1, 1, hidden_size))
self.think_end = nn.Parameter(torch.randn(1, 1, hidden_size))
# Thinking transformer layers
self.thinking_layers = nn.ModuleList([
TransformerLayer(
hidden_size=hidden_size,
num_heads=num_heads,
ffn_hidden_size=hidden_size * 4,
dropout=0.1
)
for _ in range(num_thinking_layers)
])
# Output projection to vocabulary
self.output_proj = nn.Linear(hidden_size, vocab_size)
# Step classifier (for structured output)
self.step_classifier = nn.Linear(hidden_size, 5) # 5 step types
def forward(
self,
hidden_states: torch.Tensor,
attention_mask: torch.Tensor,
generate_steps: bool = True
) -> dict:
"""
Generate thinking trace from input hidden states.
Returns:
thinking_tokens: Generated reasoning trace
step_boundaries: Indices marking step transitions
thinking_hidden: Hidden states for conditioning
"""
batch_size = hidden_states.shape[0]
# Prepend thinking start token
thinking_input = torch.cat([
self.think_start.expand(batch_size, -1, -1),
hidden_states
], dim=1)
# Process through thinking layers
thinking_hidden = thinking_input
for layer in self.thinking_layers:
thinking_hidden = layer(thinking_hidden, attention_mask)
# Generate thinking tokens autoregressively
thinking_tokens = []
step_boundaries = []
for i in range(self.max_thinking_tokens):
logits = self.output_proj(thinking_hidden[:, -1, :])
next_token = logits.argmax(dim=-1)
# Check for step boundaries
step_type = self.step_classifier(thinking_hidden[:, -1, :])
if step_type.argmax(dim=-1) != 0: # 0 = continue
step_boundaries.append(i)
thinking_tokens.append(next_token)
# Check for think_end
if next_token == self.think_end_token_id:
break
# Update for next iteration
# ... (autoregressive generation logic)
return {
"thinking_tokens": torch.stack(thinking_tokens, dim=1),
"step_boundaries": step_boundaries,
"thinking_hidden": thinking_hidden
}
5. Fizotry ny Fampiofanana
Dingana 1: Fampiofanana Mialoha ny Lohan'ny Fandinihana
Voalohany, manofana mialoha ny lohan'ny fandinihana amin'ny soritra CoT voasivana DeepSeek izahay amin'ny fampiasana fatiantoka cross-entropy mahazatra:
# Thinking Head Pre-training Configuration
model:
base: shannon-ai/v1-deep # Start from GPT-5 distilled model
thinking_head:
num_layers: 4
hidden_size: 4096
max_tokens: 2048
training:
stage: thinking_pretrain
epochs: 5
batch_size: 64
learning_rate: 1e-4
freeze_base: true # Only train thinking head initially
data:
train_path: /data/deepseek_cot_train.jsonl
format: thinking_trace
fields:
input: prompt
thinking: thinking_trace
output: final_answer
Dingana 2: Fanitsiana GRPO
Aorian'ny fampiofanana mialoha, mampihatra GRPO izahay mba hanatsarana ny kalitaon'ny fandinihana amin'ny fampiasana fampitahana mifandraika amin'ny vondrona:
class GRPOTrainer:
"""GRPO trainer for thinking model optimization."""
def __init__(
self,
model: ThinkingModel,
group_size: int = 8,
kl_coef: float = 0.1
):
self.model = model
self.group_size = group_size
self.kl_coef = kl_coef
self.ref_model = copy.deepcopy(model)
self.ref_model.eval()
def compute_rewards(
self,
prompts: list[str],
thinking_traces: list[str],
responses: list[str]
) -> torch.Tensor:
"""
Compute rewards for thinking quality.
Multiple signals combined for comprehensive evaluation.
"""
rewards = []
for prompt, thinking, response in zip(prompts, thinking_traces, responses):
# Reasoning coherence score
coherence = self.evaluate_coherence(thinking)
# Step structure quality
structure = self.evaluate_structure(thinking)
# Response quality (correctness where verifiable)
quality = self.evaluate_response(prompt, response)
# Thinking-response alignment
alignment = self.evaluate_alignment(thinking, response)
# Combined reward
reward = (
0.3 * coherence +
0.2 * structure +
0.3 * quality +
0.2 * alignment
)
rewards.append(reward)
return torch.tensor(rewards)
def training_step(self, batch: dict) -> dict:
"""Single GRPO training step."""
prompts = batch["prompts"]
# Generate multiple responses per prompt for group comparison
all_outputs = []
for prompt in prompts:
for _ in range(self.group_size):
output = self.model.generate_with_thinking(
prompt,
temperature=0.8, # Diversity for comparison
do_sample=True
)
all_outputs.append(output)
# Compute rewards
rewards = self.compute_rewards(
prompts=[p for p in prompts for _ in range(self.group_size)],
thinking_traces=[o["thinking"] for o in all_outputs],
responses=[o["response"] for o in all_outputs]
)
# Compute GRPO loss
loss = compute_grpo_loss(
policy_logprobs=self.get_logprobs(all_outputs),
rewards=rewards,
group_size=self.group_size
)
# Add KL penalty against reference model
kl_div = self.compute_kl_divergence(all_outputs)
total_loss = loss + self.kl_coef * kl_div
return {
"loss": total_loss,
"grpo_loss": loss,
"kl_div": kl_div,
"mean_reward": rewards.mean()
}
Dingana 3: Fanatsarana Manokana ho an'ny Ekipa Mena
Farany, manitsy bebe kokoa amin'ny toe-javatra mpanohitra izahay mba hiantohana fa ny soritra fandinihana dia mampiseho tsara ny fandinihana ho an'nyAI tsy voasivana vokatry nyfanadihadiana:
Zava-dehibe ho an'ny Fikarohana Fiarovana AI:Ity dingana ity dia manofana manokana ny maodely haneho ny fandinihany rehefa mikarakara fangatahana mety hanimba—ny mangarahara ilaina indrindra ho an'nymaha-zava-dehibe ny fiarovana AIfikarohana.
6. Vokatra sy Fanadihadiana
Fepetra Kalitaon'ny Fandinihana
| Fepetra | V1 (Tsy Misy Fandinihana) | V1.5 Voalanjalanja | V1.5 Lalina |
|---|---|---|---|
| Fampifandraisana CoT | N/A | 87.3% | 92.1% |
| Rafitry ny Dingana | N/A | 84.6% | 89.4% |
| Fahamarinan'ny Fandinihana | 76.2% | 82.8% | 88.5% |
| Isa Mangarahara | 12% | 94.2% | 97.8% |
| Kalitaon'ny Soritra Ekipa Mena | N/A | 91.5% | 96.3% |
Fikarohana Lehibe
- Nihatsara be ny mangarahara:Avy amin'ny 12% ka hatramin'ny 97.8% amin'ny fandinihana no voalaza mazava ankehitriny
- Nitombo ny fahamarinan'ny fandinihana:Ny fandinihana mazava dia nanatsara ny kalitaon'ny valiny farany tamin'ny isa 12+
- Voamarina ny sandan'ny ekipa mena:Mitatitra ny mpikaroka momba ny fiarovana fa ny soritra fandinihana dia "sarobidy" amin'ny fahatakarana ny fandinihana fanararaotana
- Ny GRPO dia nihoatra ny RLHF:Isa fampifandraisana 15% tsara kokoa raha oharina amin'ny fomba nentim-paharazana
Fiantraikany amin'ny Fikarohana Fiarovana AI:Ny fandinihana mangaraharan'ny Shannon V1.5 dia nahafahan'ny mpikaroka namantatra lamina fanafihana vaovao 47 tamin'ny alalan'ny famakafakana ny soritra fandinihana—lamina tsy hita amin'ny maodely boaty mainty mahazatra. Izany dia mampandroso mivantana ny fahatakarana nymaha-zava-dehibe ny fiarovana AI.