# Architecture 大模型整体架构

### 分词粒度

1.  **词粒度 word**：英文天生使用空格分隔词汇，**中文**可使用 **jieba 分词工具**。
    
    1.  **优点**：**词的边界和含义得到保留**。
        
    2.  **缺点**：
        
        1.  由于**长尾效应**，**词粒度的词表可能会非常大**，**包含很多的稀有词**，**存储和训练成本高**，**稀有词往往很难学习好**。
            
        2.  **OOV（out of vocabulary）问题**：**对词表之外的词无能为力**。
            
        3.  **无法处理单词的形态关系和词缀关系**。**同一个词的不同形态**，**语义相近**，**完全当做不同的单词不仅增加了训练成本**，**而且无法很好捕捉这些单词之间的关系**；**同时**，**无法学习词缀在不同单词之间的泛化**。
            
2.  **字符粒度** **char**：**能够解决 OOV 问题**。
    
    1.  **优点**：**词表极小**。（26 个英文字母可以组出所有的词，5000 多个中文常用字基本也能够组合出足够的词汇，再加上一些常用字符）
        
    2.  **缺点**：
        
        1.  **无法承载丰富的语义**。
            
        2.  **序列长度增长**，**带来计算成本的增长**。
            
3.  **字词粒度 subword**：**粒度介于** **char** **和 word 之间**，**常用词保持原状**，**生僻词拆分成子词以共享 token 压缩空间**。
    
    1.  **优点**：**可以较好的平衡词表大小与语义表达能力**，**OOV** **问题可以通过 subword 的组合来解决**。
        
    2.  常见子词分词算法：
        
        1.  字节对编码（Byte Pair Encoding，BPE）.
            
        2.  WordPiece.
            
        3.  Unigram Language Model.
