---
title: Fairy2i-W2
canonical_url: "https://www.modelscope.cn/models/PKULab1806/Fairy2i-W2"
md_url: "https://www.modelscope.cn/models/PKULab1806/Fairy2i-W2.md"
repository: PKULab1806/Fairy2i-W2
chinese_name: "Fairy2i-W2: 2-bit Complex Quantized LLM"
last_updated: 2025-12-12
license: llama2
pipeline_tag: text-generation
tasks:
  - text-generation
model_type:
  - llama
architectures:
  - LlamaForCausalLM
base_model:
  - meta-llama/Llama-2-7b-hf
base_model_relation: finetune
parameters: 4.3B
tensor_type:
  - BF16
library_name:
  - pytorch
  - transformer
  - safetensors
frameworks:
  - Pytorch
language:
  - zh
  - en
downloads: 83
stars: 0
tags:
  - llama-2
  - quantization
  - qat
  - complex-valued
  - 2-bit
  - text-generation
  - recursive
  - safetensors
---

# Fairy2i-W2

> Fairy2i-W2 - PKULab1806 在 ModelScope 开源的模型。大语言模型（LLMs）已经彻底改变了人工智能领域，然而它们巨大的内存和计算需求使得激进的量化成为必要，不断将表示推向单比特的理论极限。虽然复数值大语言模型（如 iFairy）相比实数值模型在低比特表示方面具有优势，但它们需要从头训练，无法利用庞大的预训练实数值基础模型生态系统。

PKULab1806/Fairy2i-W2 是 ModelScope 魔搭社区上的 4.3B 参数text-generation模型，采用 llama2 许可，基于 meta-llama/Llama-2-7b-hf 构建。

- **Repository**: PKULab1806/Fairy2i-W2
- **License**: llama2
- **Tasks**: text-generation
- **Parameters**: 4.3B
- **Base model**: meta-llama/Llama-2-7b-hf
- **Tags**: llama-2, quantization, qat, complex-valued, 2-bit, text-generation, recursive, safetensors
- **Downloads**: 83
- **Stars**: 0
- **Last updated**: 2025-12-12

Source: https://www.modelscope.cn/models/PKULab1806/Fairy2i-W2

---

# Fairy2i-W2

**🔗 相关链接**: [![Paper](https://img.shields.io/badge/Paper-arXiv-red?logo=arxiv&logoColor=white)](https://arxiv.org/abs/2512.02901) [![GitHub](https://img.shields.io/badge/GitHub-181717?logo=github&logoColor=white)](https://github.com/PKULab1806/Fairy2i-W2) [![Hugging Face](https://img.shields.io/badge/🤗_Hugging_Face-FFD21E?logoColor=black)](https://huggingface.co/PKU-DS-LAB/Fairy2i-W2)

## 摘要

大语言模型（LLMs）已经彻底改变了人工智能领域，然而它们巨大的内存和计算需求使得激进的量化成为必要，不断将表示推向单比特的理论极限。虽然复数值大语言模型（如 iFairy）相比实数值模型在低比特表示方面具有优势，但它们需要从头训练，无法利用庞大的预训练实数值基础模型生态系统。

我们提出了 **Fairy2i**，一个通用框架，将预训练的实数值层转换为等价的广泛线性复数值形式，在重用现有检查点的同时实现极低比特量化。通过证明实数值和广泛线性映射之间的无损数学等价性，我们将标准 Transformers 转换到复数域，并采用相位感知的量化方案，使用高效的第四单位根码本（{±1, ±i}）。此外，我们引入了递归残差量化机制，迭代地最小化量化误差，允许通过高效的免乘法累加进行推理。

我们证明了 **Fairy2i-W2** 在有效 2 比特精度下恢复了 LLaMA-2 7B 的性能，达到与全精度基线几乎相当的水平，显著优于最先进的实数值二值和三值量化方法。

这项工作弥合了复数值算术的表征效率与预训练模型的实用性之间的差距，为在商用硬件上进行高效推理开辟了新途径。

## 方法

Fairy2i-W2 包含三个关键组件：

### 广泛线性变换

我们将预训练的实数值线性层转换为等价的**广泛线性复数值形式**，而不改变模型的行为。每个实数值线性层 $R$（大小为 $2n \times 2m$ 的实矩阵）被重新参数化为两个复矩阵 $U$ 和 $W$（每个大小为 $n \times m$），使得：

$$y = Ux + W\bar{x}$$

其中 $\bar{x}$ 表示 $x$ 的复共轭。这种变换是**无损的**和**唯一的**，在量化之前保留了原始的前向计算。

### 相位感知复数量化

我们使用基于相位的方案对复数权重进行量化，码本为 $\{\pm 1, \pm i\}$（第四单位根）。对于每个复数权重，我们通过角度将其投影到最近的码字，并应用轴方向的缩放因子。在 QAT 训练期间，我们维护全精度主权重，并在前向传播中使用量化副本，通过直通估计器（STE）梯度进行训练。

### 递归残差量化

为了进一步减少量化误差，我们递归地量化残差误差。每个复数权重表示为低比特项的和：

$$W_q \approx \sum_{t=0}^{T-1} W^{(t)}$$

其中每一项都使用相同的相位感知机制进行量化。对于 **Fairy2i-W2**（$T=2$），我们使用 2 个递归阶段，实现有效的**每个实参数 2 比特**。

## 评估

### LLaMA-2 7B 上的主要结果

| 方法 | 比特数 | C4 PPL↓ | ARC-e | ARC-c | HellaSwag | PIQA | Winogrande | 平均 |
|------|--------|---------|-------|-------|-----------|------|------------|------|
| LLaMA-2 (FP16) | 16 | 6.63 | 75.59 | 43.17 | 57.06 | 77.91 | 69.85 | 64.72 |
| **Fairy2i-W2** | **2** | **7.85** | **72.73** | **39.76** | **53.33** | **76.17** | **68.03** | **62.00** |
| AQLM | 2 | 8.54 | 63.68 | 32.76 | 49.55 | 74.76 | 65.67 | 57.28 |
| QuIP# | 2 | 11.01 | 55.56 | 28.84 | 42.94 | 71.38 | 62.43 | 52.23 |
| Real-Ternary (QAT) | 1.58 | 11.06 | 55.93 | 24.15 | 38.43 | 69.80 | 55.17 | 48.70 |
| **Fairy2i-W1** | **1** | **11.03** | **56.56** | **24.82** | **38.19** | **70.08** | **53.67** | **48.66** |
| Real-Binary (QAT) | 1 | 11.75 | 53.32 | 22.70 | 35.57 | 66.81 | 52.64 | 46.21 |
| GPTQ | 3 | 10.61 | 58.46 | 31.06 | 45.21 | 71.49 | 59.19 | 53.08 |

**主要结果：**
- **Fairy2i-W2 (2-bit)** 实现了 7.85 的困惑度，接近 FP16（6.63），同时优于所有 2-bit PTQ 方法
- **Fairy2i-W2** 在零样本任务上实现了 62.00% 的平均准确率，与 FP16（64.72%）高度竞争
- **Fairy2i-W1 (1-bit)** 在相同或更低的比特预算下优于实数值二值和三值基线

## 快速开始

**Fairy2i-W2** 基于 LLaMA-2 7B 架构，仅将线性层替换为复数值 QAT 层。模型结构在其他方面与 LLaMA-2 相同。

### 安装

```bash
pip install torch transformers safetensors modelscope
```

### 加载模型

使用 ModelScope 加载模型：

```python
from modelscope import snapshot_download
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# 下载模型
model_dir = snapshot_download('PKULab1806/Fairy2i-W2')

# 加载模型和分词器
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    attn_implementation="flash_attention_2",
    torch_dtype=torch.bfloat16,
    device_map="auto",
    trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)

# 模型已准备就绪！
prompt = "你好，最近怎么样？"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=50,
        do_sample=True,
        temperature=0.7
    )

response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
```

### 模型详情

- **基础模型**: LLaMA-2 7B
- **量化方法**: Complex-Phase V2（2 步递归残差量化）
- **有效比特宽度**: 每个实参数 2 比特
- **码本**: $\{\pm 1, \pm i\}$（第四单位根）
- **训练**: 在 RedPajama 数据集的 30B tokens 上进行 QAT（量化感知训练）

### 仓库文件

- `load_model.py`: 模型加载脚本
- `qat_modules.py`: QAT 线性层实现
- `quantization.py`: 量化函数（PhaseQuant、BitNet 等）
- `config.json`: 模型配置（与 LLaMA-2 7B 相同）
- `model.safetensors.index.json`: 权重文件索引
- `model-0000X-of-00003.safetensors`: 分片的模型权重
- 分词器文件：`tokenizer.json`、`tokenizer_config.json` 等

### 引用

如果您在研究中使用 Fairy2i-W2，请引用：

```bibtex
@article{wang2025fairy2i,
  title={Fairy2i: Training Complex LLMs from Real LLMs with All Parameters in $\{\pm 1, \pm i\}$},
  author={Wang, Feiyu and Tan, Xinyu and Huang, Bokai and Zhang, Yihao and Wang, Guoan and Cong, Peizhuang and Yang, Tong},
  journal={arXiv preprint},
  year={2025}
}
```

### 许可证

本模型遵循与 LLaMA-2 相同的许可证。详情请参考原始 LLaMA-2 许可证。

### 联系方式

如有问题或建议，请联系：tanxinyu330@gmail.com
