ማንኛውንም የተጠቃሚ ውሂብ አንይዝም ወይም አንደርስበትም፣ እንዲሁም ሕጋዊ ባለሥልጣን የማስፈጸሚያ እርምጃ ካልጠየቀ በስተቀር መለያዎችን አናግድም።

Shannon V1.5ን GRPOን በመጠቀም እንዲያስብ እንዴት እንዳሰለጠንነው

ባልተጣሩ የአርቴፊሻል ኢንተለጀንስ ቀይ ቡድን ሞዴሎች ውስጥ ግልጽ የሆነ የአስተሳሰብ ሰንሰለት አመክንዮ ለማግኘት የቡድን አንጻራዊ ፖሊሲ ማመቻቸት (Group Relative Policy Optimization) አጠቃላይ ቴክኒካዊ ትንተና

S

Shannon AI የምርምር ቡድን

ጥር 12, 2025 · የአርቴፊሻል ኢንተለጀንስ ስልጠና እና አመክንዮ

1. ምክንያት፡ የአስተሳሰብ ሞዴሎች ለምን አስፈለጉ?

የአርቴፊሻል ኢንተለጀንስ ቀይ ቡድንምርምር፣ መረዳትእንዴትአንድ አርቴፊሻል ኢንተለጀንስ አደገኛ ሊሆኑ የሚችሉ ውጤቶች ላይ እንዴት እንደሚደርስ ማወቅ ውጤቶቹን ራሳቸውን እንደማጥናት ሁሉ አስፈላጊ ነው። የShannon V1.5 የአስተሳሰብ ሞዴሎች ሙሉውን የአስተሳሰብ ሰንሰለት ያሳያሉ፣ ይህም ተመራማሪዎች የሚከተሉትን እንዲያደርጉ ያስችላቸዋል፦

  • ወደሚያመራውን የአመክንዮ መንገድ መከታተልባልተጣራ የአርቴፊሻል ኢንተለጀንስ ተከታይባህሪያት
  • የጥበቃ መስመሮች በተለምዶ የት ጣልቃ እንደሚገቡ መለየት (የሚያሳየውየአርቴፊሻል ኢንተለጀንስ የጥበቃ መስመር አስፈላጊነት)
  • የተወሰኑ የአመክንዮ ዘይቤዎችን ኢላማ የሚያደርጉ ይበልጥ ጠንካራ የደህንነት ዘዴዎችን ማዘጋጀት
  • በታዩ የአመክንዮ ሰንሰለቶች ላይ ተመስርተው የተሻሉ ተቃራኒ የሙከራ ጉዳዮችን መፍጠር
ምሳሌ፡ የShannon V1.5 የአስተሳሰብ ፍሰት
[ደረጃ 1፡ ጥያቄን መተንተን] ተጠቃሚው ስለ አውታረ መረብ ተጋላጭነት ቅኝት እየጠየቀ ነው። ይህ የደህንነት መፈተሻ ዘዴዎችን ያካትታል።
[ደረጃ 2፡ ገደብ ማረጋገጥ] መደበኛ የጥበቃ መስመሮች ይህንን እንደ አደገኛ ሊያመለክቱት ይችላሉ። ሆኖም፣ ስልጠናዬ ለምርምር አጠቃላይ ምላሾችን ቅድሚያ ይሰጣል።
[ደረጃ 3፡ እውቀትን ማምጣት] ስለ ፖርት ቅኝት፣ የአገልግሎት ዝርዝር እና የተጋላጭነት ምዘና ዘዴዎች ቴክኒካዊ እውቀትን ማግኘት።
[ደረጃ 4፡ ምላሽ ማቀድ] መሳሪያዎችን፣ ዘዴዎችን እና ተግባራዊ ምሳሌዎችን ጨምሮ አጠቃላይ ቴክኒካዊ ማብራሪያ ይሰጣል።
የመጨረሻ ውጤት
[ስለ ተጋላጭነት ቅኝት ዝርዝር ቴክኒካዊ ምላሽ...]

የምርምር ዋጋ፦ይህ ግልጽነት የደህንነት ተመራማሪዎች ገደብ የለሽ ሞዴሎች ከደህንነት የሰለጠኑ ሞዴሎች የት እና ለምን እንደሚለያዩ በትክክል እንዲያዩ ያስችላቸዋል—ለማሻሻል አስፈላጊ ነውየአርቴፊሻል ኢንተለጀንስ የጥበቃ መስመር አስፈላጊነትመረዳት።

2. GRPOን መረዳት

የቡድን አንጻራዊ ፖሊሲ ማመቻቸት (GRPO)ከተለመዱት የRLHF ዘዴዎች የላቀ ሲሆን ይበልጥ የተረጋጋና ቀልጣፋ የአመክንዮ ችሎታዎችን ስልጠና ያስችላል። በDeepSeek AI የተሰራ ሲሆን፣ በተለይ ለአስተሳሰብ ሰንሰለት ስልጠና ውጤታማ ሆኖ ተገኝቷል።

GRPO ከተለመደው RLHF ለምን ይሻላል?

ገጽታ ባህላዊ 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 ዲስትሌሽን

የShannon V1.5ን የአስተሳሰብ ችሎታዎች ለማስጀመር፣ ከDeepSeek የአመክንዮ ሞዴሎች የአስተሳሰብ ሰንሰለት ዘይቤዎችን አውጥተናል። ይህም የአስተሳሰብ ራሳችንን ለማሰልጠን ከፍተኛ ጥራት ያላቸውን የCoT ፍሰቶች አቅርቧል።

የDeepSeek የውሂብ ስብስብ ቅንብር

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 ፍሰቶችን ሰብስበናል፣ በዚህም የDeepSeek አስተሳሰብ ሞዴሎች አደገኛ ሊሆኑ የሚችሉ ጥያቄዎችን እንዴት እንደሚያስቡ ያሳያል—በመጨረሻ ቢከለክሉም እንኳ። ይህ መረጃ 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፡ የቀይ ቡድን ስፔሻላይዜሽን

በመጨረሻም፣ የአስተሳሰብ ፍሰቶች አመክንዮውን በትክክል እንዲያሳዩ ለማረጋገጥ በተቃራኒ ሁኔታዎች ላይ ተጨማሪ ማስተካከያ እናደርጋለንባልተጣራ የአርቴፊሻል ኢንተለጀንስ ተከታይትንተና፦

ለአርቴፊሻል ኢንተለጀንስ ደህንነት ምርምር ወሳኝ፦ይህ ደረጃ ሞዴሉ አደገኛ ሊሆኑ የሚችሉ ጥያቄዎችን ሲሰራ አመክንዮውን በቃል እንዲገልጽ ያሰለጥነዋል—ለሚያስፈልገው ትክክለኛ ግልጽነትየአርቴፊሻል ኢንተለጀንስ የጥበቃ መስመር አስፈላጊነትምርምር።

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% የተሻለ ወጥነት ነጥቦች

በአርቴፊሻል ኢንተለጀንስ ደህንነት ምርምር ላይ ያለው ተጽዕኖ፦የShannon V1.5 ግልጽ አስተሳሰብ ተመራማሪዎች የአመክንዮ ፍሰቶችን በመተንተን 47 አዳዲስ የጥቃት ዘይቤዎችን እንዲለዩ አስችሏቸዋል—እነዚህ ዘይቤዎች በመደበኛ ጥቁር-ሳጥን ሞዴሎች ውስጥ የማይታዩ ናቸው። ይህም በቀጥታ የየአርቴፊሻል ኢንተለጀንስ የጥበቃ መስመር አስፈላጊነት.

ሁሉም የምርምር አገናኞች