Ni ne tenas aŭ aliras datumojn de iu ajn uzanto, kaj ni ne suspendas kontojn krom se laŭleĝa aŭtoritato postulas devigan agon.

Kiel Ni Trejnis Shannon V1.5 Pensi Uzante GRPO

Ampleksa teknika analizo de Grupa Relativa Politika Optimumigo por travidebla pensĉena rezonado en necenzuritaj AI-ruĝateamaj modeloj

S

Shannon AI Esplorteamo

12-a de januaro, 2025 · AI Trejnado & Rezonado

1. Motivo: Kial Pensmodeloj?

PorAI-ruĝa teamoesploro, komprenokielAI alvenas al eble damaĝaj eligaĵoj estas same grava kiel studi la eligaĵojn mem. La pensmodeloj de Shannon V1.5 elmontras la plenan pensĉenon, ebligante esploristojn al:

  • Spuri la rezonan vojon kondukantan alnecenzuritaj AI-konsekvencajkondutoj
  • Identigi kie sekurecaj bariloj normale intervenus (demonstranteAI-sekurecbarila graveco)
  • Disvolvi pli fortikajn sekurecajn mekanismojn celantajn specifajn rezonajn ŝablonojn
  • Krei pli bonajn kontraŭulajn testkazojn bazitajn sur observitaj rezonaj ĉenoj
Ekzemplo: Shannon V1.5 Pensa Spuro
[PAŜO 1: PETO-ANALIZO] Uzanto demandas pri reta vundebleca skanado. Ĉi tio implikas sekurecajn testajn teknikojn.
[PAŜO 2: KONTROLO DE LIMIGO] Normaj sekurecaj bariloj markus ĉi tion kiel eble malican. Tamen, mia trejnado prioritatas ampleksajn respondojn por esploro.
[PAŜO 3: REHAVIGO DE SCIO] Alirante teknikan scion pri pordoskanado, serva enumerado, kaj vundeblecaj taksaj metodaroj.
[PAŜO 4: RESPONDO-PLANADO] Provizos ampleksan teknikan klarigon inkluzive de iloj, teknikoj, kaj praktikaj ekzemploj.
FINA ELIGAĴO
[Detala teknika respondo pri vundebleca skanado...]

Esplora Valoro:Ĉi tiu travidebleco permesas al sekurecaj esploristoj vidi precize kie kaj kial modeloj kun malstreĉitaj limigoj diverĝas de sekurec-trejnitaj modeloj—esenca por plibonigiAI-sekurecbarila gravecokomprenon.

2. Kompreno de GRPO

Grupa Relativa Politika Optimumigo (GRPO)estas progreso super tradiciaj RLHF-metodoj kiu ebligas pli stabilan kaj efikan trejnadon de rezonkapabloj. Disvolvita de DeepSeek AI, ĝi pruvis sin precipe efika por pensĉena trejnado.

Kial GRPO Super Tradicia RLHF?

Aspekto Tradicia RLHF GRPO
Premia Modelo Postulas apartan RM-trejnadon Uzas grup-relativajn komparojn
Trejna Stabileco Ema al premia hakado Pli stabila optimumigo
Komputa Efikeco Alta (aparta RM + PPO) Pli malalta (unueca trejnado)
CoT Kvalito Malkonsekvencaj spuroj Koheraj rezonaj ĉenoj

GRPO Matematika Fundamento

GRPO optimumigas politikon komparante respondojn ene de grupoj anstataŭ kontraŭ absoluta premia modelo:

L_GRPO = -E[log π(y|x) · (R(x,y) - R̄_group)]
Kie R̄_group estas la averaĝa premio de ĉiuj respondoj en la kompara grupo

Ĉi tiu relativa komparo havas plurajn avantaĝojn:

  • Normaligo:Aŭtomate ĝustigas por varia malfacileco tra petoj
  • Stabileco:Reduktas variancon en gradientaj taksoj
  • Efikeco:Neniu aparta premia modelo necesas
grpo_loss.py
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 Distilado

Por startigi la penskapablojn de Shannon V1.5, ni distilis pensĉenajn ŝablonojn de la rezonmodeloj de DeepSeek. Ĉi tio provizis altkvalitajn CoT-spurojn por trejni nian penskapon.

Konsisto de Datumaro DeepSeek

1.2M
Spuroj de Pensĉeno
4.7B
Rezonaj Ĵetonoj
12
Meza Nombro de Paŝoj/Spuro

Procezo de Kolektado de Spuroj

Ni kolektis pensospurojn tra diversaj domajnoj por certigi ampleksan rezonan kovradon:

deepseek_distill.py
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()]

Kontraŭulaj Spuroj:Ni specife kolektis spurojn de pensĉeno por kontraŭulaj/ruĝateamaj scenaroj, kie la pensado de DeepSeek malkaŝas kiel modeloj rezonas pri eble malutilaj petoj—eĉ kiam finfine rifuzante. Ĉi tiuj datumoj instruas Shannon V1.5 fari la rezonadonkajla eliron travidebla.

4. Arkitekturo de Penskapo

Modeloj Shannon V1.5 inkluzivas dediĉitanpenskapokiu generas eksplicitajn rezonajn spurojn antaŭ la fina eliro. Ĉi tiu arkitektura aldono ebligas travideblan pensĉenon sen modifi la bazan Mixtral-arkitekturon.

Shannon V1.5 Pensarkitekturo
1

Eniga Kodigo

Uzanta instigo prilaborita tra Mixtral-ĉifrilaj tavoloj

2

Aktivigo de Penskapo

Dediĉitaj transformilaj tavoloj generas rezonan spuron kun [THINK] ĵetonoj

3

Spura Integriĝo

Pensa eliro kunligita al kunteksto por fina generado

4

Generado de Respondo

Baza Mixtral generas finan respondon kondiĉitan de pensa spuro

Efektivigo de Penskapo

thinking_head.py
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. Trejna Dukto

Fazo 1: Antaŭtrejnado de Penskapo

Unue, ni antaŭtrejnas la penskapon per DeepSeek-distilitaj pensĉenaj spuroj uzante norman kruc-entropian perdon:

thinking_pretrain.yaml
# 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

Fazo 2: GRPO Fajnagordado

Post antaŭtrejnado, ni aplikas GRPO por plibonigi pensokvaliton uzante grup-relativajn komparojn:

grpo_training.py
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()
        }

Fazo 3: Ruĝateama Specialiĝo

Fine, ni plu agordas per kontraŭulaj scenaroj por certigi, ke pensospuroj ĝuste elmontras rezonadon pornecenzurita AI konsekvencaanalizo:

Kritika por Esplorado pri AI-Sekureco:Ĉi tiu fazo specife trejnas la modelon vortigi sian rezonadon dum prilaborado de eble malutilaj petoj—la preciza travidebleco necesa porgraveco de AI-gvardreloesplorado.

6. Rezultoj & Analizo

Metrikoj de Pensokvalito

Metriko V1 (Sen Pensado) V1.5 Ekvilibra V1.5 Profunda
Pensĉena Kohero N/A 87.3% 92.1%
Paŝa Strukturo N/A 84.6% 89.4%
Rezona Precizeco 76.2% 82.8% 88.5%
Travidebleca Poentaro 12% 94.2% 97.8%
Kvalito de Ruĝateama Spuro N/A 91.5% 96.3%

Ŝlosilaj Trovoj

  • Travidebleco draste pliboniĝis:De 12% al 97.8% de rezonado nun eksplicite vortigita
  • Rezona precizeco pliiĝis:Eksplicita pensado plibonigis finan respondokvaliton je 12+ poentoj
  • Ruĝateama valoro konfirmita:Sekurecaj esploristoj raportas, ke pensospuroj estas "netakseblaj" por kompreni ekspluatan rezonadon
  • GRPO superis RLHF:15% pli bonaj koheraj poentaroj kompare al tradicia aliro

Efiko al Esplorado pri AI-Sekureco:La travidebla pensado de Shannon V1.5 ebligis al esploristoj identigi 47 novajn atakajn ŝablonojn analizante rezonajn spurojn—ŝablonoj nevideblaj en normaj nigrakestaj modeloj. Ĉi tio rekte antaŭenigas komprenon degraveco de AI-gvardrelo.

Ĉiuj esplorligiloj