通用视觉大模型

ViT: Google
Swin-Transformer: Microsoft
V-MOE: Google
SAM: Meta
盘古CV: 华为
文心UFO: 百度

预训练大模型

# 导入必要的库和模块
import argparse
import json
import pathlib

# 定义 Stanford Alpaca 使用的 prompt 格式
PROMPT_DICT = {
    "prompt_input": "..."  # 包含 instruction 和 input 的 prompt 格式,
    "prompt_no_input": "..."  # 只包含 instruction 的 prompt 格式
}

# 主函数
def main(args_param):
    data_path = pathlib.Path(args_param.data_path)
    with data_path.open() as f:
        data = json.load(f)

    # 构造新的对话格式数据
    sources = [prompt_input.format_map(example) if example.get("input", "") != "" else prompt_no_input.format_map(example) for example in data]
    targets = [example["output"] for example in data]

    new_data = []
    cnt = 1
    for s, t in zip(sources, targets):
        new_data.append(
            {
                "id": str(cnt),
                "conversations": [
                    {"from": "human", "value": s},
                    {"from": "gpt", "value": t},
                ],
            }
        )
        cnt += 1

    # 将新的对话格式数据写入输出文件
    json.dump(new_data, open(args_param.output_path, "w"), indent=2)

if __name__ == "__main__":
    # 解析命令行参数
    parser = argparse.ArgumentParser()
    parser.add_argument("--data_path", type=str, default="alpaca-data.json")
    parser.add_argument("--output_path", type=str, default="alpaca-data-conversation.json")
    args = parser.parse_args()
    # 执行主函数
    main(args)

流程:

  1. 数据集准备: 首先需要收集大规模的文本图片数据作为预训练的训练集,数据量越大效果越好。大模型常用的数据集包括维基百科、书籍文集、网络新闻等。

  2. 数据预处理: 对采集的文本数据进行预处理,例如tokenize、建立词表等。

  3. 模型构建: 构建模型的网络结构, transformers类模型最为常用。选择合适的编码器,如BERT的Encoder。

  4. 预训练任务设计: 选择合适的预训练任务,让模型在大数据上进行自监督学习。常见的有 Masked Language Model、Next Sentence Prediction 等。

  5. 模型预训练: 在预训练数据上针对设定的预训练任务训练模型,取得最优的参数。一般在大规模集群中训练,模型大小会非常大。

  6. Fine-tuning: 在下游任务数据集上,Freeze部分预训练参数,仅 Fine-tune 部分任务相关参数,从而快速让模型适应新任务。

  7. 模型部署: 选择合适的方式部署训练好的模型,进行文本生成、文本分类等生产应用。

     通过预训练,模型可以学习到通用的语言表示,然后迁移至下游任务中,以提高效果、减少人工标注需求。这就是预训练语言模型的全流程。
    

你可能感兴趣的:(算法,计算机视觉)