一个专注于分享计算机视觉、多模态机器学习方向前沿论文,解答常见科研问题,分享好用科研工具的公众号。努力努力再努力,瑞思拜! |
![]() |
新浪科技 · 【女粉丝太少?周鸿祎:我不靠颜值吃饭,粉丝对 ... · 昨天 |
|
媒正经 · “接入DeepSeek”带来哪些变化?各地详解! · 昨天 |
![]() |
新浪科技 · 【#抖音辟谣多位高管将退休和离职创业#:不实 ... · 2 天前 |
![]() |
新浪科技 · 【#DeepSeek下周开源5个代码库#,每 ... · 3 天前 |
|
腾讯研究院 · 腾讯研究院AI速递 20250221 · 3 天前 |
本文提出了一种新颖的跨模态蒸馏方法,称为TinyCLIP,用于大规模语言图像预训练模型。 该方法引入了两个核心技术:亲和力模拟和权重继承。 亲和力模拟探索了蒸馏过程中模态之间的相互作用,使学生模型能够在视觉-语言亲和空间中模拟教师模型学习跨模态特征对齐的行为。 权重继承将预训练权重从教师模型传递到学生模型,以提高蒸馏效率。 此外,我们将该方法扩展到多阶段渐进式蒸馏,以减轻极端压缩过程中信息权重的损失。 综合实验表明了TinyCLIP的有效性,结果表明它可以将预训练的CLIP ViT-B/32的大小减少50%,同时保持相当的零样本性能。 在追求相当性能的同时,带有权重继承的蒸馏可以将训练速度提高1.4-7.8
† †
大规模的语言图像预处理,例如 ,例如 ,剪辑 [46] ,由于其显着的零射击传递能力 [46] 和文本到图像生成中的前所未有的性能 [47] 。 由于视觉和语言的复杂性质,当前的方法通常诉诸利用大量参数来赋予具有跨模式功能的模型 [46,22,71,71,72,72,43,39,1] 。 反过来,这导致了这些模型的存储,内存和计算时间的高成本,这激发了模型压缩的需求,以使其对现实世界应用程序的更小,更快 [64,13] 。
作为一种核心压缩技术,知识蒸馏已被广泛研究并应用于单模式设置 [20,17] 。 但是,其多模式的潜力仍未得到充实。 与单模模型不同,语言图像跨模型模型的蒸馏构成了不同的挑战。 首先,类似剪辑的语言图像模型通常由两个分支组成:图像编码器和文本编码器 [22,72,52,73] 。 在提炼这种多分支模型时,要考虑教师和学生模型中不同模态分支之间信息的相互作用至关重要。 其次,原始剪辑 [46] 模型在4亿张图像文本对中进行了预训练,用于32个时期,这需要数千个GPU天,当计算资源受到限制时,使蒸馏成为一项重大挑战。 有什么方法可以降低夹蒸馏的成本?
为了应对这些挑战,我们提出了一种称为tinyclip的新型跨模式蒸馏方法,该方法引入了两种关键技术: 亲和力模仿 和 重量继承 。 与依靠图像或文本特征进行蒸馏的方法相反,我们从经验上表明,图像文本亲和力空间中的蒸馏知识更有效。 具体来说,我们利用教师模型中图像和文本嵌入的余弦相似性来促进学生模型的蒸馏,从而使学生模仿教师的视觉语言特征对齐。 We refer to this process as affinity mimicking .
为了提高蒸馏效率,我们介绍了
权重继承
,这是一种将预训练的权重从教师模型转移到学生对应的技术。 由于继承权重为学生模型提供了良好的初始化,因此蒸馏的进度可以在很大程度上加速。 体重继承的主要挑战在于确定哪些权重更有利。 为了解决这个问题,我们介绍了两种解决方案:手册和自动继承。 我们出人意料地发现,从教师模型中的
此外,我们将提出的权重继承扩展到多阶段的渐进过程,在此过程中,每个后续阶段都会自动从前阶段继承重要权重。 我们观察到,当教师模型表现出更高的表现并与学生分享类似的体系结构时,体重继承可以提供更好的结果。 这是因为重大的建筑差异可能会破坏从老师传输到学生时学到的权重。 因此,我们将继承分为多个阶段,使每个阶段的学生模型与前任教师共享一个更相似的结构,并逐步继承权重。
我们的实验表明,TinyClip在ImageNet零射门评估和各种下游任务中的各个级别的加速和模型大小都提供了竞争模型。 As shown in Fig.
1
, pre-trained on the same LAION-400M dataset
[50]
, TinyCLIP-ViT using 63M parameters achieves 61.4% zero-shot top-1 accuracy on ImageNet
[7]
, being 2.0
•
我们提出了一种新的跨模态蒸馏方法,以释放小型CLIP模型的能力,充分利用大型模型和预训练数据。 据我们所知,这是第一项探索语言图像模型预训练蒸馏的工作。
•
我们提出了在小型规模下最先进的语言图像预训练模型,在速度和精度之间取得了最佳平衡。 大量的实验结果证明了小型模型在各种下游任务中的优越性和良好的泛化能力。
语言图像预训练 在过去几年取得了显著进展 [10, 4] 。 特别是,对比语言图像预训练展现出非常令人印象深刻的零样本迁移和泛化能力 [45, 46, 22, 72, 61, 43, 74] 。 最具代表性的作品之一是CLIP [46] 。 大量的后续工作被提出以优化预训练框架 [28, 76, 16, 68, 62, 15, 29, 67] 。 同时,一些工作利用预训练模型进行下游任务,例如开放词汇检测和分割 [30, 75, 66, 33] ,视频识别 [56, 24] 以及文本到图像生成 [47, 41] 。
最近,有一些工作尝试扩展语言图像预训练模型。 BEiT-3 [57] 使用多路Transformer将多模态预训练模型扩展到19亿个参数。 FLIP [31] 通过掩码建模扩展图像文本预训练,使CLIP能够获得更快的训练速度,同时获得更好的性能。 另一方面,也有一些关于缩小CLIP模型规模的工作 [51] 。 但是,它们都集中在特定任务上,例如 [5,51] 和视频内容理解 [42] 。 相比之下,我们的工作集中于语言图像预训练,这是剪辑压缩方面的第一部作品。
知识蒸馏 在教师框架 [20] 中已被广泛用于将知识从大型转移到小模型。 单个模态中的蒸馏,例如视觉 [54,64,37] 或语言 [48,23] ,已经进行了广泛的研究。 但是,跨模式蒸馏的探索相对有限。 探索跨模式蒸馏的一些早期作品仅着眼于特定任务,例如VQA和图像标题 [5,11,59] ,限制了在一般下游任务中应用的方法。 相比之下,这项工作会注意一般的跨模式预训练蒸馏,其中蒸馏模型可以转移到各种下游场景中。
值得注意的是,我们提出的权重遗传策略具有与模型修剪技术相似的精神 [18,65,51] 。 两种方法都涉及识别重要权重的同时删除冗余的权重。 但是,它们有三个基本差异。 1)以前的修剪方法主要集中于单模式模型 [18,65,3] ,而我们的方法将注意力转移到了多模式上。 由于不同的模态表现出不同的冗余特征,因此在从每种方式中选择重要权重时必须考虑这些差异。 2)与以前强调修剪架构 [12,35,58] 的重要性不同,我们认为从原始模型继承的权重也非常有益,尤其是在压缩剪辑时喜欢语言图像模型。 3)我们的方法利用了渐进的多阶段过程,这使得遗传的权重能够在训练过程中加速小型模型的收敛性。
在本节中,我们提出了TinyClip,这是一种简单有效的方法,用于提炼大规模的语言图像预处理模型,例如剪辑。 它由三个组成部分组成:模仿(§ 3.1 ),重量继承(§ 3.2 )和多阶段的渐进式蒸馏(§ 3.3 ) 。
语言图像预训练模型通常由两个分支组成,一个图像编码器以提取视觉表示形式和一个文本编码器来提取文本表示。 视觉和文本表示形式通过最小化对比损失
更具体地说,如图
2
所示,我们考虑了两种类型的亲和力蒸馏损失:图像到语言损失
在这里,
where
原始的夹型模型在4亿张图像文本对上进行了32个时期的预训练,花费了数千个GPU天。 这给蒸馏带来了重大的成本挑战。 为了提高训练效率,我们引入了体重继承,这种技术从训练有素的大型教师模型到较小的学生模型都继承了重要权重。 继承权重的主要挑战是从老师的大量权重中确定重要的权重。 我们提出了两种选择重要权重的方法:手动重量继承和自动权重继承。
手动继承
。 对于手动重量继承,我们首先分析现有剪辑预训练模型的冗余。 图。
4
表明,文本编码器在深度(层)上显示出更多的冗余,而图像编码器则在宽度上显示出更多的冗余(通道)。 基于这一发现,我们采用了均匀选择
自动继承
。 尽管手动继承可以被认为是模型压缩的一种有效方法,但它确实存在一个缺点,即需要预先了解哪些权重需要继承。 这一限制可能会使该技术难以应用于不同的模型。 为了解决这个问题,我们提出了一种自动权重继承方案。 受大型语言模型中结构化剪枝的启发
[65]
,我们引入可学习掩码来识别权重的重要性。 考虑到不同模态之间的差异,可学习掩码分别施加在视觉和语言分支上,如图
3
所示。 引入一个整体稀疏性约束,以保证选定的重要权重数量满足我们的压缩要求。 为不失一般性,这里我们以Transformer架构为例介绍权重继承的详细过程。 特别地,一个标准的Transformer块包含一个多头注意力(MHA)层和一个前馈网络(FFN)。 为了细粒度地捕获权重的重要性,我们引入了两个掩码变量
其中
在自动继承过程中,使用了两个损失函数来联合优化掩码和模型, i.e. ,方程( 1 )中定义的稀疏性损失和蒸馏损失。
其中
其中
当试图达到较高的目标稀疏性, 即 >70% 时,单阶段压缩模型会导致精度显著下降,甚至导致收敛失败。 这是因为大型模型的大部分权重都被直接丢弃,包括那些对确保模型质量和收敛至关重要的权重。 作为解决方案,我们提出了一种多阶段渐进式蒸馏方法,以在不严重牺牲精度的情况下实现高压缩率。 在每个阶段,我们使用适度的压缩程度, 例如 25%,以避免性能大幅下降并使训练稳定。
具体来说,每个阶段都包括权重继承和亲和力模拟,如算法 1 中所述。 在权重继承阶段,大型模型的权重逐渐减少,直到保留目标稀疏性和关键权重用于小型模型。 之后,小型模型通过模仿亲和力提炼,这涉及将视觉语言的亲和力知识从老师转移到学生。 重复此过程,直到达到目标稀疏度。
输入:
预先训练的剪辑模型
1
Initialize the number of stages
2
for
3 // Increase mask compression rate, retain important weights
4
for
5
Update target compression rate
2
6
Calculate
distillation loss
between origin teacher model
7
Calculate
sparsity loss
between learnable mask compression rate
3
8
Optimize
9 end for
10
11 // Cross-Modal distillation
12
for
13
Calculate
distillation loss
between origin teacher model
14
Optimize
15 end for
16
17 end for
Return
compressed model
1
每个阶段压缩25%,
2
目标压缩率
架构。 The original CLIP employs a transformer-based model as its text encoder, while its image encoder has two variations, i.e. , ViT [9] and modified ResNet [19] , covering both transformer-based and CNN-based architectures. 为了继承权重,我们从两个模型变体中继承了权重: openclip vit-b/32或vit-b/16 [21] 和 clip Resnet-50 [46] ,在Laion-2B [49] 和WIT-400M [46] 上进行了预训练 1 . 为了进行蒸馏,我们使用 openclip vit-b/32 [21] 在laion-2b [49] 上预先训练作为教师模型,由于ImageNet [7] 的高零射精准确度具有65.6%的高度,并且具有较高的推理吞吐量。 此外,我们还将方法扩展到davit [8] ,这是一种混合体系结构。 我们在Laion-400m上重新生产了佛罗伦萨-Davit-5m [72,8] 。 然后,我们使用亲和力模仿和权重继承来提炼相同的模型。 教师模型是Florence-Davit-D3,它在FLD-900M [72] 上进行了预先培训,并在Imagenet [7] 上实现了78.0%的顶部1精度为78.0%。 >具有128m参数。
亲和力模仿。
如选项卡中所定义。
2
,我们探索了跨模式之间教师和学生模型之间的不同互动方案。 The contrastive loss
重量继承。
我们使用建议的多阶段渐进式蒸馏来压缩Openclip vit-b
[21]
和夹子Resnet-50
[46]
。 在每个阶段,我们都采用手动或自动重量继承。 在手动继承中,我们通过减少图像编码器的宽度和文本编码深度来分别压缩图像编码器和文本编码器。 在自动继承中,我们为整个模型设置了目标稀疏性。 在每个阶段,可训练的面罩初始化为1,并在前3,000个训练迭代中进行了更新,其中优化器为ADAMW
[36,25]
,恒定学习率为0.01且无重量衰减。 在等式中定义的可学习乘数
训练设置。
我们在两个公共数据集上训练我们的模型,即 LAION-400M
[50]
和 YFCC-15M
[53]
。 在 LAION-400M 上,模型压缩分为三个阶段,包括:参数从 100% 压缩到 75% 训练 6 个 epoch;参数从 75% 压缩到 50% 训练 16 个 epoch;参数从 50% 压缩到 25% 训练 16 个 epoch。 在 YFCC-15M 上,包含两个压缩阶段,其中训练 epoch 数均为 25,参数从 100% 压缩到 50%,然后从 50% 压缩到 10%。 我们遵循 CLIP
[46]
的超参数,除了在使用权重继承时学习率设置为
评估设置。 模型在多个基准测试上进行评估。 在零样本迁移评估和鲁棒性评估中,我们遵循 CLIP [46] 中相同的提示工程,其中每个类别使用 80 个文本模板用于 ImageNet [7] 。 在线性探测中,我们使用 Elevater 工具包 [27] 进行评估,其中使用搜索到的超参数训练分类头 50 个 epoch。 请注意,我们没有计算文本嵌入层中的参数数量。 它是一个查找表,其参数大小与具有相同隐藏维度和词汇量大小的模型相同。 推理吞吐量在配备 CUDA 11 和 PyTorch v1.12 [40] 的 Nvidia V100 上测量,其中批大小为 1024。
Method | Image | Text Encoder | #Params (M) | MACs | Throughput | Training | IN-1K | Flickr30k | MSCOCO | |||
Encoder | depth | width | Image+Text | (G) | (pairs/s) | datasets | top1 acc (%) |
I
|
T
|
I
|
T
|
|
Training data: 15M / 20M |
|
|
|
|
|
|
|
|
||||
RILS [69] | ViT-B/16 | 12 | 512 | 86 + 38 | 20.5 | 818 | LAION-20M | 45.0 | 45.1 | 34.9 | 32.2 | 25.5 |
MaskCLIP [77] | ViT-B/16 | 12 | 512 | 86 + 38 | 20.5 | 818 | LAION-20M | 46.6 | 64.9 | 48.1 | 38.5 | 24.8 |
SLIP [38] | ViT-B/16 | 12 | 512 | 86 + 38 | 20.5 | 818 | YFCC-15M | 42.8 | 57.6 | 40.1 | 31.1 | 20.3 |
CLIP [46, 38] | ViT-B/16 | 12 | 512 | 86 + 38 | 20.5 | 818 | YFCC-15M | 37.6 | 51.6 | 32.2 | 26.5 | 17.1 |
TinyCLIP ( Ours ) | ViT-39M/16 | 6 | 512 |
39+19(
2.1
|
9.5(
2.2
|
1,469(
1.8
|
YFCC-15M | 63.5 | 84.4 | 66.7 | 54.9 | 38.9 |
TinyCLIP ( Ours ) | ViT-8M/16 | 3 | 256 |
8+3(
11.3
|
2.0(
10.3
|
4,150(
5.1
|
YFCC-15M | 41.1 | 62.3 | 42.3 | 36.2 | 21.5 |
Training data: 400M |
|
|
|
|
|
|
|
|
||||
Florence [72] | DaViT-5M | 6 | 256 | 5+5 | 1.1 | 2,980 | LAION-400M | 45.0 | 61.2 | 41.5 | 36.2 | 20.9 |
TinyCLIP ( Ours ) | DaViT-5M | 6 | 256 | 5+5 | 1.1 | 2,980 | LAION-400M | 50.0 | 66.2 | 48.5 | 40.7 | 24.5 |
CLIP [46] | ResNet-101 | 12 | 512 | 56 + 38 | 12.8 | 1,161 | WIT-400M | 62.2 | 78.1 | 59.2 | 49.3 | 30.7 |
CLIP [46] | ResNet-50 | 12 | 512 | 38 + 38 | 9.1 | 1,549 | WIT-400M | 59.6 | 81.2 | 58.2 | 50.8 | 28.3 |
TinyCLIP ( Ours ) | ResNet-30M | 9 | 512 |
30+29(
1.3
|
6.9(
1.3
|
1,811(
1.2
|
LAION-400M | 59.1 | 81.1 | 61.2 | 52.7 | 33.9 |
TinyCLIP ( Ours ) | ResNet-19M | 6 | 512 |
19+19(
2.0
|
4.4(
2.1
|
3,024(
2.0
|
LAION-400M | 56.4 | 76.2 | 58.3 | 48.9 | 30.9 |
OpenCLIP [21] | ViT-B/32 | 12 | 512 | 88 + 38 | 7.4 | 2,452 | LAION-2B | 65.7 | 84.7 | 66.8 | 56.9 | 39.3 |
CLIP [46] | ViT-B/32 | 12 | 512 | 88 + 38 | 7.4 | 2,452 | WIT-400M | 63.2 | 80.1 | 59.8 | 51.2 | 30.6 |
OpenCLIP [21] | ViT-B/32 | 12 | 512 | 88 + 38 | 7.4 | 2,452 | LAION-400M | 62.9 | 79.3 | 62.0 | 53.3 | 35.4 |
TinyCLIP ( Ours ) | ViT-61M/32 | 9 | 512 |
61+29(
1.4
|
5.3(
1.4
|
3,191(
1.3
|
LAION-400M | 62.1 | 78.6 | 63.3 | 53.9 | 35.9 |
TinyCLIP ( Ours ) | ViT-40M/32 | 6 | 512 |
40+19(
2.1
|
3.5(
2.1
|
4,641(
1.9
|
LAION-400M | 59.7 | 77.3 | 58.9 | 49.8 | 33.1 |
[1.1pt/6pt] TinyCLIP ( Ours ) | ViT-63M/32 | auto | auto |
63+31(
1.3
|
5.6(
1.3
|
2,905(
1.2
|
LAION-400M | 63.9 | 83.2 | 64.4 | 55.5 | 37.6 |
TinyCLIP ( Ours ) | ViT-45M/32 | auto | auto |
45+18(
2.0
|
3.7(
2.0
|
3,682(
1.5
|
LAION-400M | 61.4 | 80.9 | 62.2 | 52.8 | 34.7 |
TinyCLIP ( Ours ) | ViT-22M/32 | auto | auto |
22+10(
3.9
|
1.9(
3.9
|
5,504(
2.2
|
LAION-400M | 53.7 | 71.3 | 52.0 | 44.4 | 28.3 |
[1.1pt/6pt] TinyCLIP ( Ours ) | ViT-63M/32 | auto | auto |
63+31(
1.3
|
5.6(
1.3
|
2,909(
1.2
|
LAION+YFCC-400M | 64.5 | 84.9 | 66.0 | 56.9 | 38.5 |
TinyCLIP ( Ours ) | ViT-45M/32 | auto | auto |
45+18(
2.0
|
3.7(
2.0
|
3,685(
1.5
|
LAION+YFCC-400M | 62.7 | 80.3 | 63.9 | 54.0 | 36.7 |
我们将TinyClip与TAB中的最新模型进行比较。 1 。 报告了对Imagenet-1K [7] ,Flickr30k [44] 和MSCOCO检索 [34] 的零射门评估。
When performing training on YFCC-15M
[53]
, we use affinity mimicking and manual weight inheritance to distill OpenCLIP ViT-B/16
[21]
, whose zero-shot performance ImageNet上为70.2%。 通过遗传一半的参数,我们的TinyClip VIT-39M/16可以在Imagenet上获得63.5%的零光精度,超过原始的夹子VIT-B/16
[46]
25.9%。 此外,当将图像编码器压缩到具有256个尺寸的10层和具有256个尺寸的3层的文本编码时,TinyClip vit-8m/16仍然超过夹子vit-b/16
[46]
。 %使用
When conducting training on LAION-400M [50] , we distill three different models, i.e. , Florence DaViT [72, 8] , CLIP ResNet [46] , and OpenCLIP ViT-B/32 [21] . 结果选项卡。 1 演示了我们方法的功效。 更具体地说,我们的TinyClip davit-5M可在ImageNet上的原始模型和5.0/4.5%的图像到文本检索中的闪烁和MSCOCO分别提高5.0%。 值得注意的是,这是一个仅使用10M参数来实现Imagenet上50.0%精度的微小语言图像预训练的模型。
对于剪辑重新系统,TinyClip-30M仅在第一阶段接受4个时期的训练,从原始模型继承了75%的参数。 结果表明,ImageNet上TOP-1精度的略有降低,但是
对于OpenCLIP ViT-B/32,我们使用我们的亲和力模拟方法,结合手动或自动权重继承对其进行蒸馏。 我们设计了一个三阶段渐进式蒸馏,其中每个阶段将模型压缩25%。 这三个阶段分别训练了6、16和16个epochs。 在手动继承中,TinyCLIP ViT-61M/32获得了与OpenCLIP ViT-B/32
[21]
相当的性能,同时将参数减少了29%。 另一方面,自动继承获得了比手动继承更好的结果。 例如,TinyCLIP ViT-63M/32在分类和检索任务上的性能都比手动继承的ViT-61M/32模型高出
亲和力模拟的影响。
如表
2
所示,我们提出了四种不同的交互模式。 亲和力模拟
Interaction Mode | Loss Formula | Top-1 Acc |
Contrastive loss [46] |
|
53.4 % |
Affinity mimicking |
|
55.5 % |
Cross modalities |
|
55.3 % |
|
||
|
|
|
Single modality |
|
19.2 % |
Weight Inheritance | IN-1K | Flickr30k | MSCOCO | ||
top1 acc (%) |
I
|
T
|
I
|
T
|
|
None | 37.8 | 50.2 | 33.4 | 29.7 | 16.6 |
Manual | 54.0 | 70.4 | 52.9 | 46.5 | 29.3 |
Automatic | 54.9 | 73.5 | 55.9 | 47.9 | 30.8 |
体重遗传的影响。
我们验证了TAB中提出的两种重量继承的功效。
3
。 与不使用权重继承的模型相比,手动继承带来了
语言图像模型的冗余。 我们通过删除层来分析图像编码器和文本编码器的冗余和文本编码器的冗余 [6,2,26] ,并通过删除层来分析零摄像机的精度。 如图 4 所示,我们观察到余弦相似性和准确性之间的高相关性。 与图像编码器相比,文本编码器具有较高的余弦相似性。 它显示文本编码器的冗余比图像编码器的冗余高。 因此,可以在没有明显的性能下降的情况下实现沿深度维度的文本编码器。
我们进一步探讨了提议的自动重量遗传的冗余。 As shown in Fig.
5
, for width analysis, it is observed that the embedding channels of the text encoder experience only a marginal reduction (
e.g.
, 512
教师模型的影响。 我们研究了哪种模型更适合权重继承。 如表 4 所分析,强大的教师模型并不一定能保证权重继承获得更好的结果。 相反,架构相似且性能更高的教师模型是更好的选择。 例如,虽然 ViT-H/14 的性能排名最高,但在权重继承方面却落后于其他模型。
Pretrained | Teacher | Inherited | Student |
Teacher Model | Acc.(%) | Ratio | Acc.(%) |
w/o weight inheritance | - | 0 | 36.2 |
CLIP ViT-B/32 [46] | 63.2 | 59 / 126 | 52.4( +16.2 ) |
OpenCLIP ViT-B/32 [21] | 62.9 | 59 / 126 | 53.5( +17.3 ) |
OpenCLIP ViT-B/16 [21] | 67.1 | 59 / 124 | 52.8( +16.6 ) |
OpenCLIP ViT-L/14 [21] | 75.3 |
|
媒正经 · “接入DeepSeek”带来哪些变化?各地详解! 昨天 |
![]() |
新浪科技 · 【#抖音辟谣多位高管将退休和离职创业#:不实信息】针对媒体报道的-20250222110002 2 天前 |
![]() |
新浪科技 · 【#DeepSeek下周开源5个代码库#,每日解锁新内容】#De-20250221134125 3 天前 |
|
腾讯研究院 · 腾讯研究院AI速递 20250221 3 天前 |
|
一起玩转邮币卡 · 活动13【美通天下】第2期来袭,大毛不含糊。可撸红包可撸票还可以推广。 8 年前 |
|
杜绍斐 · 一幅被和谐20万次的画,现在不翻墙也能看 7 年前 |
|
酷玩实验室 · 中国大飞机只是山寨货?三分钟教你怎么让喷子闭嘴 7 年前 |
|
人民日报 · 习近平亲任主任,三位常委任副主任,这个委员会不简单! 7 年前 |
|
品途商业评论 · 王小川:搜狗不上市,不找女朋友,上市后剑指百度丨品途出品 7 年前 |