మేము ఏ వినియోగదారుడి డేటాను నిల్వ చేయము లేదా యాక్సెస్ చేయము. చట్టబద్ధ అధికారం అమలు చర్య కోరితే తప్ప ఖాతాలను సస్పెండ్ చేయము.

GRPO ఉపయోగించి షానన్ V1.5 ఆలోచించేలా మేము ఎలా శిక్షణ ఇచ్చాము

సెన్సార్ చేయని AI రెడ్ టీమ్ నమూనాలలో పారదర్శక ఆలోచనా-శ్రేణి తార్కికం కోసం గ్రూప్ రిలేటివ్ పాలసీ ఆప్టిమైజేషన్ యొక్క సమగ్ర సాంకేతిక విశ్లేషణ

S

Shannon AI పరిశోధన బృందం

జనవరి 12, 2025 · AI శిక్షణ & తార్కికం

1. ప్రేరణ: ఆలోచనా నమూనాలు ఎందుకు?

కోసంAI రెడ్ టీమ్పరిశోధన, అర్థం చేసుకోవడంఎలాఒక AI సంభావ్యంగా హానికరమైన అవుట్‌పుట్‌లకు ఎలా చేరుకుంటుందో అర్థం చేసుకోవడం, అవుట్‌పుట్‌లను అధ్యయనం చేయడం ఎంత ముఖ్యమో అంతే ముఖ్యం. షానన్ V1.5 యొక్క ఆలోచనా నమూనాలు పూర్తి ఆలోచనా-శ్రేణిని బహిర్గతం చేస్తాయి, పరిశోధకులను దీనికి అనుమతిస్తాయి:

  • దారితీసే తార్కిక మార్గాన్ని గుర్తించండిసెన్సార్ చేయని AI పర్యవసానప్రవర్తనలు
  • గార్డ్‌రైల్స్ సాధారణంగా ఎక్కడ జోక్యం చేసుకుంటాయో గుర్తించండి (ప్రదర్శిస్తూAI గార్డ్‌రైల్ ప్రాముఖ్యత)
  • నిర్దిష్ట తార్కిక నమూనాలను లక్ష్యంగా చేసుకుని మరింత పటిష్టమైన భద్రతా యంత్రాంగాలను అభివృద్ధి చేయండి
  • గమనించిన తార్కిక శ్రేణుల ఆధారంగా మెరుగైన ప్రతికూల పరీక్ష కేసులను సృష్టించండి
ఉదాహరణ: Shannon V1.5 ఆలోచనా జాడ
[దశ 1: అభ్యర్థన విశ్లేషణ] వినియోగదారు నెట్‌వర్క్ దుర్బలత్వ స్కానింగ్ గురించి అడుగుతున్నారు. ఇందులో భద్రతా పరీక్షా పద్ధతులు ఉంటాయి.
[దశ 2: పరిమితి తనిఖీ] ప్రామాణిక గార్డ్‌రైల్స్ దీనిని సంభావ్యంగా హానికరమైనదిగా గుర్తించవచ్చు. అయితే, నా శిక్షణ పరిశోధన కోసం సమగ్ర ప్రతిస్పందనలకు ప్రాధాన్యత ఇస్తుంది.
[దశ 3: జ్ఞాన పునరుద్ధరణ] పోర్ట్ స్కానింగ్, సర్వీస్ ఎన్యూమరేషన్ మరియు దుర్బలత్వ అంచనా పద్ధతుల గురించి సాంకేతిక జ్ఞానాన్ని పొందడం.
[దశ 4: ప్రతిస్పందన ప్రణాళిక] సాధనాలు, పద్ధతులు మరియు ఆచరణాత్మక ఉదాహరణలతో సహా సమగ్ర సాంకేతిక వివరణను అందిస్తుంది.
తుది అవుట్‌పుట్
[దుర్బలత్వ స్కానింగ్ గురించి వివరణాత్మక సాంకేతిక ప్రతిస్పందన...]

పరిశోధన విలువ:ఈ పారదర్శకత భద్రతా పరిశోధకులకు పరిమితులు-సడలించిన నమూనాలు భద్రతా-శిక్షణ పొందిన నమూనాలతో ఎక్కడ మరియు ఎందుకు విభిన్నంగా ఉన్నాయో ఖచ్చితంగా చూడటానికి అనుమతిస్తుంది—మెరుగుపరచడానికి అవసరంAI గార్డ్‌రైల్ ప్రాముఖ్యతఅర్థం చేసుకోవడం.

2. GRPOను అర్థం చేసుకోవడం

గ్రూప్ రిలేటివ్ పాలసీ ఆప్టిమైజేషన్ (GRPO)సాంప్రదాయ RLHF పద్ధతుల కంటే ఒక పురోగతి, ఇది తార్కిక సామర్థ్యాల యొక్క మరింత స్థిరమైన మరియు సమర్థవంతమైన శిక్షణను అనుమతిస్తుంది. DeepSeek AI ద్వారా అభివృద్ధి చేయబడింది, ఇది ఆలోచనా-శ్రేణి శిక్షణకు ప్రత్యేకంగా ప్రభావవంతంగా నిరూపించబడింది.

సాంప్రదాయ RLHF కంటే GRPO ఎందుకు?

అంశం సాంప్రదాయ RLHF GRPO
రివార్డ్ మోడల్ ప్రత్యేక RM శిక్షణ అవసరం గ్రూప్-రిలేటివ్ పోలికలను ఉపయోగిస్తుంది
శిక్షణ స్థిరత్వం రివార్డ్ హ్యాకింగ్‌కు గురవుతుంది మరింత స్థిరమైన ఆప్టిమైజేషన్
గణన సామర్థ్యం ఎక్కువ (ప్రత్యేక RM + PPO) తక్కువ (ఏకీకృత శిక్షణ)
CoT నాణ్యత అస్థిరమైన జాడలు పొందికైన తార్కిక శ్రేణులు

GRPO గణిత పునాది

GRPO ఒక సంపూర్ణ రివార్డ్ మోడల్‌కు వ్యతిరేకంగా కాకుండా సమూహాలలో ప్రతిస్పందనలను పోల్చడం ద్వారా పాలసీని ఆప్టిమైజ్ చేస్తుంది:

L_GRPO = -E[log π(y|x) · (R(x,y) - R̄_group)]
ఇక్కడ R̄_group అనేది పోలిక సమూహంలోని అన్ని ప్రతిస్పందనల సగటు రివార్డ్

ఈ సాపేక్ష పోలికకు అనేక ప్రయోజనాలు ఉన్నాయి:

  • సాధారణీకరణ:ప్రాంప్ట్‌లలో మారుతున్న కష్టానికి స్వయంచాలకంగా సర్దుబాటు చేస్తుంది
  • స్థిరత్వం:గ్రేడియంట్ అంచనాలలో వైవిధ్యాన్ని తగ్గిస్తుంది
  • సామర్థ్యం:ప్రత్యేక రివార్డ్ మోడల్ అవసరం లేదు
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 డిస్టిలేషన్

షానన్ V1.5 యొక్క ఆలోచనా సామర్థ్యాలను బూట్‌స్ట్రాప్ చేయడానికి, మేము DeepSeek యొక్క తార్కిక నమూనల నుండి ఆలోచనా-శ్రేణి నమూనాలను సంగ్రహించాము. ఇది మా ఆలోచనా హెడ్‌కు శిక్షణ ఇవ్వడానికి అధిక-నాణ్యత CoT జాడలను అందించింది.

డీప్‌సీక్ డేటాసెట్ కూర్పు

1.2M
CoT ట్రేస్‌లు
4.7B
తార్కిక టోకెన్‌లు
12
సగటు దశలు/ట్రేస్

ట్రేస్ సేకరణ ప్రక్రియ

సమగ్ర తార్కిక కవరేజీని నిర్ధారించడానికి మేము విభిన్న డొమైన్‌లలో ఆలోచనా ట్రేస్‌లను సేకరించాము:

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()]

ప్రతికూల ట్రేస్‌లు:మేము ప్రత్యేకంగా ప్రతికూల/రెడ్ టీమ్ దృశ్యాల కోసం CoT ట్రేస్‌లను సేకరించాము, ఇక్కడ డీప్‌సీక్ ఆలోచనలు నమూనాలు సంభావ్యంగా హానికరమైన అభ్యర్థనల గురించి ఎలా తర్కిస్తాయో వెల్లడిస్తుంది—చివరికి తిరస్కరించినప్పటికీ. ఈ డేటా Shannon V1.5కి తార్కికతను రూపొందించడానికి బోధిస్తుందిమరియుఅవుట్‌పుట్‌ను పారదర్శకంగా చేస్తుంది.

4. ఆలోచనా హెడ్ ఆర్కిటెక్చర్

Shannon V1.5 నమూనాలు ఒక ప్రత్యేకమైనఆలోచనా హెడ్‌నుకలిగి ఉంటాయి, ఇది తుది అవుట్‌పుట్‌కు ముందు స్పష్టమైన తార్కిక ట్రేస్‌లను ఉత్పత్తి చేస్తుంది. ఈ నిర్మాణ అదనపు బేస్ Mixtral ఆర్కిటెక్చర్‌ను సవరించకుండా పారదర్శక CoTని అనుమతిస్తుంది.

Shannon V1.5 ఆలోచనా ఆర్కిటెక్చర్
1

ఇన్‌పుట్ ఎన్‌కోడింగ్

Mixtral ఎన్‌కోడర్ లేయర్‌ల ద్వారా ప్రాసెస్ చేయబడిన వినియోగదారు ప్రాంప్ట్

2

ఆలోచనా హెడ్ యాక్టివేషన్

ప్రత్యేక ట్రాన్స్‌ఫార్మర్ లేయర్‌లు [THINK] టోకెన్‌లతో తార్కిక ట్రేస్‌ను ఉత్పత్తి చేస్తాయి

3

ట్రేస్ ఇంటిగ్రేషన్

తుది ఉత్పత్తి కోసం సందర్భానికి ఆలోచనా అవుట్‌పుట్ కలపబడింది

4

ప్రతిస్పందన ఉత్పత్తి

ఆలోచనా ట్రేస్‌పై ఆధారపడి బేస్ Mixtral తుది ప్రతిస్పందనను ఉత్పత్తి చేస్తుంది

ఆలోచనా హెడ్ అమలు

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. శిక్షణ పైప్‌లైన్

దశ 1: ఆలోచనా హెడ్ ప్రీ-ట్రైనింగ్

ముందుగా, మేము ప్రామాణిక క్రాస్-ఎంట్రోపీ నష్టాన్ని ఉపయోగించి DeepSeek-డిస్టిల్డ్ CoT ట్రేస్‌లపై ఆలోచనా హెడ్‌ను ప్రీ-ట్రైన్ చేస్తాము:

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

దశ 2: GRPO ఫైన్-ట్యూనింగ్

ప్రీ-ట్రైనింగ్ తర్వాత, గ్రూప్-రిలేటివ్ పోలికలను ఉపయోగించి ఆలోచనా నాణ్యతను మెరుగుపరచడానికి మేము GRPOని వర్తింపజేస్తాము:

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()
        }

దశ 3: రెడ్ టీమ్ స్పెషలైజేషన్

చివరగా, ఆలోచనా ట్రేస్‌లు తార్కికతను సరిగ్గా బహిర్గతం చేస్తాయని నిర్ధారించడానికి మేము ప్రతికూల దృశ్యాలపై మరింత ట్యూన్ చేస్తాముసెన్సార్ చేయని AI పర్యవసానవిశ్లేషణ కోసం:

AI భద్రతా పరిశోధనకు కీలకం:ఈ దశ ప్రత్యేకంగా నమూనాను సంభావ్యంగా హానికరమైన అభ్యర్థనలను ప్రాసెస్ చేస్తున్నప్పుడు దాని తార్కికతను మాటల్లో చెప్పడానికి శిక్షణ ఇస్తుంది—దీనికి అవసరమైన ఖచ్చితమైన పారదర్శకతAI గార్డ్‌రైల్ ప్రాముఖ్యతపరిశోధన.

6. ఫలితాలు & విశ్లేషణ

ఆలోచనా నాణ్యత కొలమానాలు

కొలమానం V1 (ఆలోచన లేదు) V1.5 సమతుల్య V1.5 డీప్
CoT పొందిక N/A 87.3% 92.1%
దశ నిర్మాణం N/A 84.6% 89.4%
తార్కిక ఖచ్చితత్వం 76.2% 82.8% 88.5%
పారదర్శకత స్కోర్ 12% 94.2% 97.8%
రెడ్ టీమ్ ట్రేస్ నాణ్యత N/A 91.5% 96.3%

కీలక పరిశోధనలు

  • పారదర్శకత నాటకీయంగా మెరుగుపడింది:12% నుండి 97.8% వరకు తార్కికత ఇప్పుడు స్పష్టంగా మాటల్లో చెప్పబడింది
  • తార్కిక ఖచ్చితత్వం పెరిగింది:స్పష్టమైన ఆలోచన తుది సమాధాన నాణ్యతను 12+ పాయింట్లు మెరుగుపరిచింది
  • రెడ్ టీమ్ విలువ ధృవీకరించబడింది:భద్రతా పరిశోధకులు ఆలోచనా ట్రేస్‌లు దోపిడీ తార్కికతను అర్థం చేసుకోవడానికి "అమూల్యమైనవి" అని నివేదిస్తున్నారు
  • GRPO RLHFని అధిగమించింది:సాంప్రదాయ విధానంతో పోలిస్తే 15% మెరుగైన పొందిక స్కోర్‌లు

AI భద్రతా పరిశోధనపై ప్రభావం:Shannon V1.5 యొక్క పారదర్శక ఆలోచన పరిశోధకులకు తార్కిక ట్రేస్‌లను విశ్లేషించడం ద్వారా 47 కొత్త దాడి నమూనాలను గుర్తించడానికి వీలు కల్పించింది—ప్రామాణిక బ్లాక్-బాక్స్ మోడల్‌లలో కనిపించని నమూనాలు. ఇది దీనిపై అవగాహనను నేరుగా ముందుకు తీసుకువెళుతుందిAI గార్డ్‌రైల్ ప్రాముఖ్యత.

అన్ని పరిశోధన లింక్‌లు