Llama 3.1 - 405B、70B 和 8B 的多语言与长上下文能力解析

Llama 3.1 发布了!Llama 3.1 有三种规格: 8B 适合在消费者级 GPU 上进行高效部署和开发,70B 适合大规模 AI 原生应用,而 405B 则适用于合成数据、大语言模型 (LLM) 作为评判者或蒸馏。这三个规格都提供基础版和指令调优版。

除了六个生成模型,Meta 还发布了两个新模型: Llama Guard 3 和 Prompt Guard。Prompt Guard 是一个小型分类器,可以检测提示注入和越狱。Llama Guard 3 是一个保护模型,能够分类 LLM 输入和生成的内容。

此次发布的一些功能和集成包括:

  • Hub 上的模型
  • Hugging Face Transformers 和 TGI 集成
  • Meta Llama 3.1 405B Instruct 的 Hugging Chat 集成
  • 使用推理端点、Google Cloud、Amazon SageMaker 和 DELL Enterprise Hub 进行推理和部署集成
  • FP8、AWQ 和 GPTQ 的量化,便于推理
  • 使用 🤗 TRL 在单个 GPU 上微调 Llama 3.1 8B
  • 使用 Distilabel 生成 Llama 3.1 70B 和 405B 的合成数据

Llama 3.1 的新功能

Llama 3.1 为什么令人兴奋?在前代产品的基础上,Llama 3.1 增加了一些关键新功能:

  • 128K token 的长上下文能力 (相较于原来的 8K)
  • 多语言支持
  • 工具使用功能
  • 拥有 4050 亿参数的超大稠密模型
  • 更宽松的许可证

让我们深入了解这些新功能!

Llama 3.1 版本引入了基于 Llama 3 架构的六个新开源 LLM 模型。它们有三种规格: 8B、70B 和 405B 参数,每种都有基础版 (预训练) 和指令调优版。所有版本都支持 128K token 的上下文长度和 8 种语言,包括英语、德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语。Llama 3.1 继续使用分组查询注意力 (GQA),这是一种高效的表示方式,有助于处理更长的上下文。

除了这六个语言模型,还发布了 Llama Guard 3 和 Prompt Guard。

  • Llama Guard 3 是 Llama Guard 家族的最新版本,基于 Llama 3.1 8B 进行微调。它为生产用例而设计,具有 128k 的上下文长度和多语言能力。Llama Guard 3 可以分类 LLM 的输入 (提示) 和输出,以检测在风险分类中被认为不安全的内容。
  • Prompt Guard,另一方面,是一个小型 279M 参数的基于 BERT 的分类器,可以检测提示注入和越狱。它在大规模攻击语料库上训练,并建议使用特定应用的数据进行进一步微调。

与 Llama 3 相比,Llama 3.1 的新特点是指令模型在工具调用方面进行了微调,适用于智能体用例。内置了两个工具 (搜索,使用 Wolfram Alpha 进行数学推理),可以扩展为自定义 JSON 功能。

Llama 3.1 模型在定制 GPU 集群上训练了超过 15 万亿 token,总计 39.3M GPU 小时 (8B 1.46M,70B 7.0M,405B 30.84M)。我们不知道训练数据集混合的具体细节,但我们猜测它在多语言方面有更广泛的策划。Llama 3.1 Instruct 已优化用于指令跟随,并在公开可用的指令数据集以及超过 2500 万合成生成的示例上进行监督微调 (SFT) 和人类反馈的强化学习 (RLHF)。Meta 开发了基于 LLM 的分类器,以在数据混合创建过程中过滤和策划高质量的提示和响应。

关于许可条款,Llama 3.1 具有非常相似的许可证,但有一个关键区别: 它允许使用模型输出来改进其他 LLM。这意味着合成数据生成和蒸馏是允许的,即使是不同的模型!这对 405B 模型尤其重要,如后面所讨论的。许可证允许再分发、微调和创建衍生作品,仍然要求派生模型在其名称的开头包括 “Llama”,并且任何衍生作品或服务必须提及 “Built with Llama”。有关完整详情,请确保阅读 官方许可证

Llama 3.1 需要多少内存?

Llama 3.1 带来了令人兴奋的进步。然而,运行它需要仔细考虑硬件资源。我们分解了三种模型规格在训练和推理中的内存需求。

推理内存需求

对于推理,内存需求取决于模型规格和权重的精度。以下是不同配置所需的近似内存:

模型规格FP16FP8INT4
8B16 GB8 GB4 GB
70B140 GB70 GB35 GB
405B810 GB405 GB203 GB

注意: 上面引用的数字表示仅加载模型检查点所需的 GPU VRAM。它们不包括内核或 CUDA 图形的 torch 保留空间。

例如,一个 H100 节点 (8x H100) 有约 640GB 的 VRAM,因此 405B 模型需要在多节点设置中运行或以较低精度 (例如 FP8) 运行,这是推荐的方法。

请记住,较低精度 (例如 INT4) 可能会导致一些精度损失,但可以显著减少内存需求并提高推理速度。除了模型权重外,您还需要将 KV 缓存保持在内存中。它包含模型上下文中所有 token 的键和值,以便在生成新 token 时不需要重新计算。特别是当利用可用的长上下文长度时,它变得至关重要。在 FP16 中,KV 缓存内存需求如下:

模型规格1k token16k token128k token
8B0.125 GB1.95 GB15.62 GB
70B0.313 GB4.88 GB39.06 GB
405B0.984 GB15.38123.05 GB

特别是对于小规格模型,当接近上下文长度上限时,缓存使用的内存与权重一样多。

训练内存需求

以下表格概述了使用不同技术训练 Llama 3.1 模型的大致内存需求:

模型规格Full Fine-tuningLoRAQ-LoRA
8B60 GB16 GB6 GB
70B300 GB160 GB48 GB
405B3.25 TB950 GB250 GB

注意: 这些是估计值,可能会根据具体实现细节和优化情况有所不同。

Llama 3.1 评估

注意: 我们目前正在新的 Open LLM Leaderboard 2 上单独评估 Llama 3.1,并将在今天晚些时候更新此部分。以下是 Meta 官方评估的摘录。

类别基准样本数指标Llama 3 8BLlama 3.1 8BLlama 3 70BLlama 3.1 70BLlama 3.1 405B
综合MMLU5宏观平均/字符准确率66.766.779.579.385.2
MMLU PRO(CoT)5宏观平均/字符准确率36.237.155.053.861.6
AGIEval 英语3-5平均/字符准确率47.147.863.064.671.6
CommonSenseQA7字符准确率72.675.083.884.185.8
Winogrande5字符准确率-60.5-83.386.7
BIG-Bench Hard(CoT)3平均/完全匹配61.164.281.381.685.9
ARC-Challenge25字符准确率79.479.793.192.996.1
知识推理TriviaQA-Wiki5完全匹配78.577.689.789.891.8
SQuAD1完全匹配76.477.085.681.889.3
阅读理解QuAC(F1)1F144.444.951.151.153.6
BoolQ0字符准确率75.775.079.079.480.0
DROP(F1)3F158.459.579.779.684.8

使用 Hugging Face Transformers

Llama 3.1 需要进行少量建模更新,以有效处理 RoPE 缩放。使用 Transformers 4.43 版,您可以使用新的 Llama 3.1 模型,并利用 Hugging Face 生态系统中的所有工具。确保使用最新的 transformers 版本:

	pip install "transformers>=4.43" --upgrade

几个细节:

  • Transformers 默认以 bfloat16 加载模型。这是 Meta 发布的原始检查点使用的类型,因此这是确保最佳精度或进行评估的推荐方法。
  • 助手响应可能以特殊 token <|eot_id|> 结尾,但我们还必须在找到常规 EOS token 时停止生成。我们可以通过在 eos_token_id 参数中提供终止符列表来提前停止生成。
  • 我们使用了 Meta 代码库中的默认采样参数 (temperaturetop_p )。我们还没有时间进行广泛测试,请随意探索!

以下代码段显示了如何使用 meta-llama/Meta-Llama-3.1-8B-Instruct 。它大约需要 16 GB 的 VRAM,适合许多消费者级 GPU。相同的代码段适用于 meta-llama/Meta-Llama-3.1-70B-Instruct ,在 140GB VRAM 和 meta-llama/Meta-Llama-3.1-405B-Instruct (需要 810GB VRAM),使其成为生产用例的非常有趣的模型。可以通过以 8 位或 4 位模式加载进一步减少内存消耗。

	from transformers import pipeline

	import torch

	 

	model_id = "meta-llama/Meta-Llama-3.1-8B-Instruct"

	pipe = pipeline(

	    "text-generation",

	    model=model_id,

	    model_kwargs={"torch_dtype": torch.bfloat16},

	    device="cuda",

	)

	 

	messages = [

	    {"role": "user", "content": "Who are you? Please, answer in pirate-speak."},

	]

	outputs = pipe(

	    messages,

	    max_new_tokens=256,

	    do_sample=False,

	)

	assistant_response = outputs[0]["generated_text"][-1]["content"]

	print(assistant_response)

	# Arrrr, me hearty! Yer lookin' fer a bit o' information about meself, eh? Alright then, matey! I be a language-generatin' swashbuckler, a digital buccaneer with a penchant fer spinnin' words into gold doubloons o' knowledge! Me name be... (dramatic pause)...Assistant! Aye, that be me name, and I be here to help ye navigate the seven seas o' questions and find the hidden treasure o' answers! So hoist the sails and set course fer adventure, me hearty! What be yer first question?

您还可以自动量化模型,以 8 位甚至 4 位模式加载,使用 bitsandbytes。4 位加载大 70B 版本大约需要 34 GB 的内存运行。这是如何以 4 位模式加载生成管道:

	pipeline = pipeline(

	    "text-generation",

	    model=model_id,

	    model_kwargs={

	        "torch_dtype": torch.bfloat16,

	        "quantization_config": {"load_in_4bit": True}

	    },

	)

有关使用 transformers 模型的更多详细信息,请查看 模型卡片

注意: Transformers 处理所有棘手的提示模板问题,如果您想了解更多关于提示的信息,请查看下一部分。

如何使用 Llama 3.1

基础模型没有提示格式。像其他基础模型一样,它们可以用于继续输入序列并进行合理的延续或零样本/少样本推理。它们也是微调您自己用例的绝佳基础。

指令版本支持具有 4 个角色的对话格式:

  1. system: 设置对话的上下文。它允许包括规则、指南或必要的信息,帮助有效响应。它也用于在适当情况下启用工具使用。
  2. user: 用户输入、命令和对模型的问题。
  3. assistant: 助手的响应,基于 systemuser 提示中提供的上下文。
  4. ipython: Llama 3.1 中引入的新角色。当工具调用返回给 LLM 时作为输出使用。

指令版本使用以下对话结构进行简单对话:

	<|begin_of_text|><|start_header_id|>system<|end_header_id|>

	 

	{{ system_prompt }}<|eot_id|><|start_header_id|>user<|end_header_id|>

	 

	{{ user_msg_1 }}<|eot_id|><|start_header_id|>assistant<|end_header_id|>

	 

	{{ model_answer_1 }}<|eot_id|>

Llama 3.1 指令模型现在支持工具调用,包括三个内置工具 (brave_search、wolfram_alpha 和 code_interpreter) 和通过 JSON 函数调用的自定义工具调用。内置工具使用 Python 语法。生成 Python 代码以进行函数调用是代码解释器工具的一部分,必须在系统提示中使用 Environment 关键字启用,如下所示。

内置工具调用

包括 “Environment: ipython” 会打开代码解释器模式,模型可以生成它期望被执行的 Python 代码。助手响应的消息体以特殊标记 <|python_tag|> 开头,以 <|eom_id|> 结尾,而不是标准 <|eot_id|>。后者表示回合结束,而前者表示继续多步推理。

内置工具调用示例

自定义工具调用

Llama 3.1 指令支持从单个用户消息中调用自定义函数。以下提示提供了如何从模型输出调用自定义函数的示例。在自定义函数调用中,模型输出 <|eot_id|>而不是 <|eom_id|> 。需要调整系统提示以告知模型如何处理函数调用输出。

自定义工具调用 JSON 函数

演示

您可以在以下演示中试验三种指令模型:

整个堆栈都是开源的。Hugging Chat 由 chat-uitext-generation-inference 提供支持。

Llama 3.1 405B 的 FP8、AWQ 和 GPTQ 量化

Meta 创建了 Llama 3.1 405B 的官方 FP8 量化版本,精度损失最小。为实现这一目标,FP8 量化仅应用于模型的主要线性运算符,例如 FFNs 的门和上升及下降投影 (涵盖 75% 的推理 FLOPs)。我们共同努力,确保此 FP8 量化检查点在社区中兼容 (transformers, TGI, VLLM)。

此外,我们使用 AutoAWQ 和 AutoGPTQ 创建了 INT4 的 AWQ 和 GPTQ 量化变体。对于 AWQ,所有线性层都使用 GEMM 内核进行量化,将零点量化到 4 位,组大小为 128; 对于 GPTQ,相同的设置仅使用 GPTQ 内核。我们确保 INT4 检查点与 transformers 和 TGI 兼容,包括 Marlin 内核支持,以加快 TGI 中 GPTQ 量化的推理速度。

可用的 Llama 3.1 405B 的量化权重:

Hugging Quants 组织 还包含 70B 和 8B 版本的量化检查点。

推理集成

Hugging Face 推理 API

Hugging Face PRO 用户现在可以访问独家 API 端点,托管 Llama 3.1 8B Instruct、Llama 3.1 70B Instruct 和 Llama 3.1 405B Instruct AWQ,由 text-generation-inference 提供支持。所有版本都支持 Messages API,因此与 OpenAI 客户端库兼容,包括 LangChain 和 LlamaIndex。

注意: 使用 pip install "huggingface_hub>=0.24.1" 更新到最新的 huggingface_hub 版本。

	from huggingface_hub import InferenceClient

	 

	# 初始化客户端,指向一个可用的模型

	client = InferenceClient()

	 

	chat_completion = client.chat.completions.create(

	    model="meta-llama/Meta-Llama-3.1-405B-Instruct-FP8",

	    messages=[

	        {"role": "system", "content": "You are a helpful and honest programming assistant."},

	        {"role": "user", "content": "Is Rust better than Python?"},

	    ],

	    stream=True,

	    max_tokens=500

	)

	 

	# 迭代并打印流

	for message in chat_completion:

	    print(message.choices[0].delta.content, end="")

有关使用 Messages API 的更多详细信息,请查看 此帖子

Hugging Face 推理端点

您可以在 Hugging Face 的 推理端点 上部署 Llama 3.1,它使用 Text Generation Inference 作为后端。Text Generation Inference 是 Hugging Face 开发的生产就绪推理容器,支持 FP8、连续批处理、token 流、张量并行,以便在多个 GPU 上快速推理。要部署 Llama 3.1,请转到 模型页面 并点击部署 -> 推理端点小部件:

	from huggingface_hub import InferenceClient

	 

	# 初始化客户端,指向一个可用的模型

	client = InferenceClient(

	    base_url="<ENDPOINT_URL>",

	)

	 

	# 创建一个聊天完成

	chat_completion = client.chat.completions.create(

	    model="ENDPOINT",

	    messages=[

	        {"role": "system", "content": "You are a helpful and honest programming assistant."},

	        {"role": "user", "content": "Is Rust better than Python?"},

	    ],

	    stream=True,

	    max_tokens=500

	)

	 

	# 迭代并打印流

	for message in chat_completion:

	    print(message.choices[0].delta.content, end="")

Hugging Face 合作伙伴集成

注意: 我们目前正在与我们的合作伙伴 AWS、Google Cloud、Microsoft Azure 和 DELL 合作,将 Llama 3.1 8B、70B 和 405B 添加到 Amazon SageMaker、Google Kubernetes Engine、Vertex AI Model Catalog、Azure AI Studio、DELL Enterprise Hub。我们将在容器可用时更新此部分 - 您可以 订阅 Hugging Squad 以获取电子邮件更新

使用 Hugging Face TRL 进行微调

在本节中,我们将查看 Hugging Face 生态系统中可用的工具,以便在消费者级 GPU 上高效训练 Llama 3.1。下面是一个示例命令,用于在 OpenAssistant 的 chat 数据集 上微调 Llama 3.1 8B。我们使用 4 位量化和 QLoRA 来节省内存,以针对所有注意力块的线性层。

使用 Hugging Face TRL 的微调示例

使用 distilabel 生成合成数据

Llama 3.1 许可证的一个重大变化是,它允许使用模型输出来改进其他 LLM,这意味着您可以使用 Llama 3.1 模型生成合成数据集,并使用它们来微调更小、更专业的模型。

让我们看一个示例,如何使用 distilabel,一个用于生成合成数据的开源框架,生成一个偏好数据集。该数据集可用于使用 TRL 提供的偏好优化方法 (如 DPO 或 KTO) 微调模型。

首先安装最新的 distilabel 版本,包括 hf-inference-endpoints 额外组件,使用 pip 如下:

	pip install “distilabel[hf-inference-endpoints]” --upgrade

然后定义一个管道:

  • 从 Hugging Face Hub 加载带有指令的数据集。
  • 使用 Hugging Face 推理端点,通过 Llama 3.1 70B Instruct 和 Llama 3.1 405B Instruct 生成响应。
  • 最后,使用 Llama 3.1 405B Instruct 作为裁判,使用 UltraFeedback 提示对响应进行评分。从这些评分中,可以选择和拒绝响应,并使用偏好优化方法微调模型。

请参阅下面的代码以定义管道,或使用此 Colab 笔记本 自行运行并探索生成的数据集。

	from distilabel.llms import InferenceEndpointsLLM

	from distilabel.pipeline import Pipeline

	from distilabel.steps import LoadDataFromHub, CombineColumns

	from distilabel.steps.tasks import TextGeneration, UltraFeedback

	 

	llama70B = InferenceEndpointsLLM(

	    model_id="meta-llama/Meta-Llama-3.1-70B-Instruct"

	)

	llama405B = InferenceEndpointsLLM(

	    model_id="meta-llama/Meta-Llama-3.1-405B-Instruct-FP8"

	)

	 

	with Pipeline(name="synthetic-data-with-llama3") as pipeline:

	    # 加载带有提示的数据集

	    load_dataset = LoadDataFromHub(

	        repo_id="argilla/10Kprompts-mini"

	    )

	    # 为每个提示生成两个响应

	    generate = [

	        TextGeneration(llm=llama70B),

	        TextGeneration(llm=llama405B)

	    ]

	    # 将响应组合到一个列中

	    combine = CombineColumns(

	        columns=["generation", "model_name"],

	        output_columns=["generations", "model_names"]

	    )

	    # 使用 405B LLM-as-a-judge 对响应进行评分

	    rate = UltraFeedback(aspect="overall-rating", llm=llama405B)

	    # 定义管道

	    load_dataset >> generate >> combine >> rate

	 

	if __name__ == "__main__":

	    distiset = pipeline.run()
PYTHON 复制 全屏

接下来是什么?除了上述示例, distilabel 还提供了使用 LLM 在广泛的场景和主题中生成合成数据的令人兴奋的方法。它包括当前 SOTA 文献中的实现,用于任务如使用 LLM-as-a-judge 方法评估输出、进化指令、数据过滤以及定义自定义组件。

如何系统的去学习大模型LLM ?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

事实上,抢你饭碗的不是AI,而是会利用AI的人。

科大讯飞、阿里、华为等巨头公司发布AI产品后,很多中小企业也陆续进场!超高年薪,挖掘AI大模型人才! 如今大厂老板们,也更倾向于会AI的人,普通程序员,还有应对的机会吗?

与其焦虑……

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

一、LLM大模型经典书籍

AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。

在这里插入图片描述

二、640套LLM大模型报告合集

这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)

在这里插入图片描述

三、LLM大模型系列视频教程

在这里插入图片描述

四、LLM大模型开源教程(LLaLA/Meta/chatglm/chatgpt)

在这里插入图片描述

LLM大模型学习路线

阶段1:AI大模型时代的基础理解

  • 目标:了解AI大模型的基本概念、发展历程和核心原理。

  • 内容

    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
    • L1.4.1 知识大模型
    • L1.4.2 生产大模型
    • L1.4.3 模型工程方法论
    • L1.4.4 模型工程实践
    • L1.5 GPT应用案例

阶段2:AI大模型API应用开发工程

  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。

  • 内容

    • L2.1 API接口
    • L2.1.1 OpenAI API接口
    • L2.1.2 Python接口接入
    • L2.1.3 BOT工具类框架
    • L2.1.4 代码示例
    • L2.2 Prompt框架
    • L2.3 流水线工程
    • L2.4 总结与展望

阶段3:AI大模型应用架构实践

  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。

  • 内容

    • L3.1 Agent模型框架
    • L3.2 MetaGPT
    • L3.3 ChatGLM
    • L3.4 LLAMA
    • L3.5 其他大模型介绍

阶段4:AI大模型私有化部署

  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。

  • 内容

    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景

这份 LLM大模型资料 包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈

### 关于Llama3.1-8B模型的参数、版本以及下载使用说明 #### 模型概述 Ollama 提供了一个用于大规模语言模型LLM)开发应用的框架或工具集,特别针对优化扩展这些模型的性能。通过点击 Models 选项可以选择要部署的具体模型,在此案例中选择了 llama3.18B 版本[^1]。 #### 参数详情 对于 Llama3.1-8B 模型而言,“8B”表示该模型拥有大约八十亿个参数。这使得它能够处理复杂的自然语言理解生成任务,同时保持相对较低的资源消耗,适合多种应用场景下的本地化部署需求[^2]。 #### 安装指南 为了启动并运行这个特定的大规模语言模型实例,可以复制如下命令并在终端执行: ```bash sudo ollama run llama3.1 ``` 这条命令会触发安装过程,并最终允许用户在终端环境中直接操作已加载好的 Llama3.1-8B 模型。 #### 图形界面集成 虽然上述步骤已经能够让模型正常运作起来,但如果希望获得更加直观的操作体验,则建议进一步为其配备相应的图形用户界面组件。 #### 性能表现评估 实际测试表明,即使在网络不可用的工作环境下,Llama3.1-8B 表现依然出色,尤其适用于学习资料整理、科学普及文章撰写及多语种互译等领域内的任务迁移工作[^4]。 #### 数据集训练改进 除了单纯增加模型容量外,开发者们还在数据源质量控制、算法效率提升等方面进行了深入探索,旨在全方位提高模型的整体效能。例如,采用了新的位置编码缩放技术来改善长序列预测精度等问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值