• [版主交流] 【华为云社区外部版主】2025年4月激励评比结果已公布!
    各位亲爱的版主们,大家好!经过大家一个月的努力角逐,4月外部版主激励评比结果已出炉,数据公示如下,请查看!(在新标签页打开图片可查看清晰大图/见附件)·外部版主激励规则:点击了解更多转正礼/基础任务/额外任务(在线时长15小时+,主题帖15+,回帖30+,技术长文5+/原创技术干货1+,合集1+,有效回复问题求助帖10+,话题互动1+,完成这4项指标可获对应价值的代金券/实物礼品)请完成任务获得激励的版主,点击填写激励发放意愿统计问卷反馈截止时间:2025年5月19日,以便小编进行相应的激励发放。注:在线时长数据达标后,才会再去考察达标版主的三项任务完成情况;主题数+回帖数达标后,才会再去考察达标版主的技术长文数量情况。
  • [技术干货] 手把手教你如何快速上手ModelArts实战
    快速上手:ModelArts简单的使用实战多机多卡用公共池的训练作业基于昇腾服务器广告词生成案例手册基于昇腾NPU部署llamafactory单机多卡微调Qwen3教程 官网视频:点击查看
  • [技术干货] ModelArts简单的使用
    1.1         找到ModelArts打开浏览器,在搜索框输入“华为云”>“华为云全球云服务专场”>“登录”>“填写账号密码”1.2         在ModelArts上创建训练作业在华为云首页,依次选择“产品”>“人工智能”>“AI开发平台ModelArts”,进入服务页面,点击“控制台”按钮,进入控制台页面。第一次使用ModelArts平台,会提示权限不足,需要授权OBS服务和SWR服务。(建议“全选”授权)点击上面红框的“此处”的超链接,进入授权委托页面,选择“新增委托”,权限配置选择“普通用户”,然后点击“创建”按钮即可。重新回到ModelArts控制台页面,提示权限不足的红框就消失了,可以正常使用了。1.3         使用ModleArts的Notebook依次按照以下操作步骤,“控制台”>“开发者环境-Notebook”>选择自己需要的配置“立即创建”>“提交”>“打开”根据自己的需求选择合适的镜像。选择创建之后,直接点击提交选择pytorch实例,点击运行按钮直接执行
  • [课程学习] 华为云学堂精品课推荐! 《AI原生应用入门》
    如今智能科技无处不在,从智能音箱至自动驾驶汽车,再到聊天机器人,它们正以不同的方式提升着我们的生活体验。然而,究竟怎样的应用才能称得上是“AI原生应用”呢?。由华为云学堂技术团队精心打造的DeepSeek大模型部署系列课程,融合实战经验,体验在线实操,边学边练,为你扫清学习障碍。一次学习终身受用,省去万元试错成本,职业竞争力飙升!本课程主要讲述AI原生应用的基本概念、核心特点及典型应用场景,详细阐述华为云应用平台AppStage与华为云AI原生应用引擎的产品优势、功能及应用场景,最后通过一个规划旅游行程实践具体介绍Agent的编排使用。1、了解AI原生应用的基本概念2、熟悉华为云应用平台AppStage3、熟悉华为云AI原生应用引擎4、掌握Agent的编排使用点击课程链接学习,开启你的AI模型部署高光时刻!
  • [课程学习] 华为云学堂精品课推荐! 《CodeArts盘古助手入门和应用》
    随着人工智能技术的飞速发展,大模型已成为推动各行各业智能化转型的重要引擎。特别是2024年,大模型技术不仅在技术层面取得了突破,更在实际应用中展现出了巨大的潜力与价值。由华为云学堂技术团队精心打造的DeepSeek大模型部署系列课程,融合实战经验,体验在线实操,边学边练,为你扫清学习障碍。一次学习终身受用,省去万元试错成本,职业竞争力飙升!本课程主要介绍CodeArts盘古助手,通过CodeArts一系列强大的辅助编码功能,帮助开发者高效提升编码效率和质量。课程内容涵盖了CodeArts在自动生成代码及其测试用例方面的应用,通过多个代码生成案例,帮助大家更深刻地理解和掌握CodeArts工具的实际应用。课程目标:1、了解CodeArts盘古助手2、熟悉CodeArts辅助编码功能3、掌握CodeArts自动生成代码及测试用例4、熟悉CodeArts代码生成案例点击课程链接学习,开启你的AI模型部署高光时刻!
  • [课程学习] 华为云学堂精品课推荐! 《大模型技术的前沿应用详解》
    随着人工智能技术的飞速发展,大模型已成为推动各行各业智能化转型的重要引擎。特别是2024年,大模型技术不仅在技术层面取得了突破,更在实际应用中展现出了巨大的潜力与价值。告别天价算力,从入门到实战,手把手教你解锁大模型。由华为云学堂技术团队精心打造的DeepSeek大模型部署系列课程,融合实战经验,体验在线实操,边学边练,为你扫清学习障碍。一次学习终身受用,省去万元试错成本,职业竞争力飙升!本课程主要讲述进入大模型时代,各个领域在大模型实际落地的尝试和进展中呈现出多元化和加速化的趋势。课程目标:1、了解大模型技术在科学研究,教育,金融,医疗,具身智能等领域的前沿应用情况。2、熟悉大模型在特定领域下的细分应用场景。3、掌握大模型解决实际领域问题的思路和抓手。点击课程链接学习,开启你的AI模型部署高光时刻!
  • [课程学习] 华为云学堂精品课推荐! 《大模型应用开发工具包》
    大模型实践,手把手教你玩转AI。由华为云学堂技术团队精心打造的DeepSeek大模型部署系列课程,融合实战经验,体验在线实操,边学边练,为你扫清学习障碍。一次学习终身受用,省去万元试错成本,职业竞争力飙升!本课程主要讲述大模型应用开发工具包,包括RAG开发工具包llamaIndex、langchain RAG模块以及Agent开发工具包langchain Agent模块,并了解llamaIndex、Langchain的基本概念、学会使用如何使用这些工具包。。课程目标:1、掌握利用llamaIndex、 langchain RAG模块构建RAG的流程2、掌握利用langchain构建Agent的流程3、了解llamaIndex、 langchain的核心模块和功能 点击课程链接学习,开启你的AI模型部署高光时刻!
  • [技术干货] 鲲鹏架构的Python高性能计算实践与DevLit优化框架应用
    “随着异构计算需求的增长,ARM架构服务器在数据中心领域的应用日益广泛。本文深入探讨了华为鲲鹏处理器在Python科学计算生态中的应用实践,分析了DevLit优化框架在鲲鹏平台上的部署与性能优化方法,并通过实验数据验证了该方案在大规模数据处理场景下的效能提升。研究表明,通过针对性优化,鲲鹏架构能够为Python科学计算工作负载提供显著的性能与能效优势。”1. 背景计算架构多样化已成为当今高性能计算领域的重要趋势。华为鲲鹏处理器作为基于ARM架构的高性能计算平台,以其卓越的能效比和可扩展性,正在数据中心和科学计算领域获得广泛应用。Python作为科学计算和人工智能领域最流行的编程语言之一,其在新兴计算架构上的性能优化成为研究热点。本文旨在探讨基于华为鲲鹏架构的Python科学计算生态系统构建,以及DevLit优化框架在此平台上的应用实践。通过分析鲲鹏架构的技术特性,结合Python计算框架的优化方法,为高性能计算应用提供参考方案。2. 鲲鹏架构技术特性分析2.1 鲲鹏处理器架构概述华为鲲鹏处理器基于ARM v8架构设计,采用多核心设计理念,具有以下关键特性:高核心密度:单芯片最高支持64核心,提供强大的并行计算能力大缓存架构:三级缓存结构,L3缓存容量达128MB,有效减少内存访问延迟优化的向量计算单元:支持SVE(Scalable Vector Extension)指令集,适合科学计算工作负载创新的内存子系统:支持DDR4-3200内存,带宽可达192GB/s华为鲲鹏920处理器采用7nm工艺制程,在保持高性能的同时,能效比相比同类x86处理器提升30%以上,这一特性使其在数据中心应用中具有明显优势。2.2 与传统x86架构的差异分析鲲鹏架构与x86架构在指令集、内存访问模式和缓存策略等方面存在显著差异:指令集特性:ARM指令集相比x86更为精简,指令译码效率更高内存访问模式:ARM架构采用不同的内存一致性模型,影响并行程序性能向量计算能力:SVE指令集提供可扩展的向量长度,相比x86的AVX-512具有更好的灵活性这些差异对Python科学计算库的性能有直接影响,需要针对性优化才能发挥鲲鹏架构的最大潜力。3. Python在鲲鹏平台的适配与优化3.1 Python核心解释器优化针对鲲鹏架构特性,Python解释器的优化包括:字节码执行引擎优化:利用ARM架构的寄存器优势,减少内存访问内存管理优化:根据鲲鹏内存子系统特性,调整垃圾回收策略JIT编译优化:针对热点代码路径,生成ARM原生指令优化后的Python解释器在鲲鹏平台上基准测试性能提升20%-35%,显著改善了CPU密集型任务的执行效率。3.2 科学计算库适配主流Python科学计算库在鲲鹏平台的适配情况:表1: 科学计算库在鲲鹏平台的适配状态+------------+---------------+---------------------+| 库名称 | 版本号 | 性能状态 |+------------+---------------+---------------------+| NumPy | 1.21.0+ | 完全优化,性能+40% || SciPy | 1.7.0+ | 基本优化,性能+25% || Pandas | 1.3.0+ | 部分优化,性能+15% || scikit-learn| 1.0.0+ | 基本优化,性能+20% |+------------+---------------+---------------------+核心优化策略包括:利用BLAS/LAPACK优化实现(OpenBLAS-ARM)向量化计算利用SVE指令集内存访问模式优化,减少缓存失效多线程并行计算框架调整4. DevLit优化框架概述与应用4.1 DevLit框架介绍DevLit是一个专为异构计算环境设计的高性能计算优化框架,具有以下特点:抽象计算图表示:将计算任务抽象为计算图,便于分析和优化自动调度策略:根据硬件特性自动选择最优执行策略算子融合技术:减少内存访问,提高计算密度硬件感知优化:针对不同硬件平台生成优化代码在鲲鹏平台上,DevLit通过深度整合ARM计算库和编译技术,为Python应用提供了强大的性能提升能力。4.2 DevLit在鲲鹏平台的部署方案DevLit在鲲鹏平台的部署架构如图1所示: +------------------+ | Python应用层 | +------------------+ | +------------------+ | DevLit优化层 | +------------------+ / \ +--------------+ +--------------+ | 计算图优化器 | | 代码生成引擎 | +--------------+ +--------------+ \ / +------------------+ | 鲲鹏硬件抽象层 | +------------------+ | +------------------+ | 鲲鹏处理器 | +------------------+部署流程包括:安装鲲鹏优化版Python开发环境部署DevLit优化框架核心组件配置硬件特性感知模块安装优化后的科学计算库应用程序适配与调优本文分享自华为云社区博客《鲲鹏架构的Python高性能计算实践与DevLit优化框架应用【华为根技术】》,作者: i-WIFI。
  • 在 Docker 中以 root 用户身份运行容器
    在 Docker 中以 root 用户身份运行容器的几种方法要确保用户进入 Docker 容器时就是 root 用户,有几种实现方式:方法1:在 Dockerfile 中指定 USER rootFROM base_image USER root # 其他指令... 这会使容器默认以 root 用户运行,但请注意安全性风险。方法2:在 docker run 命令中指定用户docker run --user root your_image方法3:构建时指定用户docker build --build-arg USER_ID=0 -t your_image . 然后在 Dockerfile 中:ARG USER_ID USER ${USER_ID:-0}
  • ensure_ascii=False 的作用
    ensure_ascii=False 的作用在 Python 的 json.dump() 或 json.dumps() 函数中,ensure_ascii 参数控制 非 ASCII 字符(如中文、日文、韩文等) 如何存储在 JSON 中:⚡ ensure_ascii=True(默认值)非 ASCII 字符会被转义为 Unicode 编码。例如:import json data = {"text": "你好,世界"} print(json.dumps(data)) 输出:{"text": "\u4f60\u597d\uff0c\u4e16\u754c"} 这是标准的 JSON 安全格式,确保在任何环境下都能正确解析,但人类难以阅读。⚡ ensure_ascii=False允许非 ASCII 字符原样输出,不会转义为 \uXXXX 格式。例如:import json data = {"text": "你好,世界"} print(json.dumps(data, ensure_ascii=False)) 输出:{"text": "你好,世界"} 这样更方便人类阅读,但仍需确保文件以 UTF-8 编码存储,否则可能出现乱码。为什么 ensure_ascii=False 很重要?提高可读性:不需要手动解码 Unicode 转义字符。中文字符直接可见,便于调试和修改。国际化支持:在需要存储 中文、日文、韩文、表情符号(如 😊)等时,直接显示原字符更有意义。配套设置 encoding='utf-8':with open("output.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False) 如果文件以 UTF-8 保存,JSON 数据也能正确读取。
  • llama-quantize 使用方法
    llama-quantize 是一个用于量化 LLaMA 模型文件的工具,它可以将高精度模型(如 FP32)转换为低精度的量化版本以减少模型大小和提高推理效率。基本用法./llama-quantize [选项] model-f32.gguf [model-quant.gguf] type [nthreads] model-f32.gguf: 输入的高精度模型文件model-quant.gguf: 输出的量化模型文件(可选,默认替换输入文件名)type: 量化类型(数字或名称)nthreads: 使用的线程数(可选)主要选项量化控制选项--allow-requantize: 允许对已量化的张量重新量化(可能降低质量)--leave-output-tensor: 不量化输出层张量(提高质量但增加大小)--pure: 禁用混合量化,所有张量使用相同量化类型重要性矩阵相关--imatrix file_name: 使用指定文件作为重要性矩阵优化量化--include-weights tensor_name: 对这些张量使用重要性矩阵--exclude-weights tensor_name: 不对这些张量使用重要性矩阵高级选项--output-tensor-type: 指定输出层的量化类型--token-embedding-type: 指定token嵌入层的量化类型--tensor-type TENSOR=TYPE: 选择性量化特定张量--keep-split: 保持输入模型的分片结构--override-kv: 覆盖模型元数据量化类型工具支持多种量化类型,按质量和大小大致排序如下:高压缩、低质量(low precision)量化:IQ1_S, IQ1_M, IQ2_XXS, IQ2_XS, IQ2_S, IQ2_M (1.56-2.7位/权重)TQ1_0, TQ2_0 (三元量化)Q2_K, Q2_K_S (2位量化)中等压缩、中等质量:IQ3_XXS, IQ3_XS, IQ3_S, IQ3_M (3-3.66位)Q3_K_S, Q3_K_M, Q3_K_L (3位混合)Q4_0, Q4_1 (4位基本)较小压缩、较高质量:IQ4_NL, IQ4_XS (4.25-4.5位非线性)Q4_K_S, Q4_K_M (4位混合)Q5_0, Q5_1, Q5_K_S, Q5_K_M (5位)Q6_K (6位)接近原始质量的选项:Q8_0 (8位)F16, BF16 (16位浮点)无损选项:COPY: 仅复制不量化F32: 原始32位浮点每种量化类型的预估模型大小(以Llama-3-8B为例)和性能指标(perplexity增量)都提供在帮助信息中,可以作为选择参考。
  • 检查 PyTorch 是否使用CXX11_ABI方法
    要检查 PyTorch 是否使用了 C++11 ABI (Application Binary Interface),可以尝试以下方法:方法一:直接检查属性import torch try: print(torch._C._GLIBCXX_USE_CXX11_ABI) except AttributeError: print("该版本的PyTorch没有提供_C._GLIBCXX_USE_CXX11_ABI属性") 方法二:通过编译选项推断如果直接访问失败,可以通过检查构建标志来推断:import torch print(torch.__config__.show()) # 显示PyTorch的构建配置 在输出中查找 -D_GLIBCXX_USE_CXX11_ABI 相关的标志。方法三:检查二进制兼容性在Linux系统上,你可以使用以下命令检查PyTorch库使用的ABI:strings /path/to/libtorch.so | grep GLIBCXX_USE_CXX11_ABI注意事项此标志主要影响使用GCC 5+编译的C++代码与PyTorch的兼容性大多数情况下,现代的PyTorch版本默认使用C++11 ABI如果从源代码构建PyTorch,可以在CMake中使用-DGLIBCXX_USE_CXX11_ABI=0/1来设置
  • torch_dtype的参数介绍
    在 PyTorch 和 Hugging Face transformers 中,torch_dtype 参数用于控制模型权重的数据类型(dtype),不同的数据类型会影响计算精度、内存占用和硬件加速效果。以下是 torch_dtype 的所有常见参数及其用途:1. PyTorch 原生数据类型torch_dtype 参数别名存储大小数值范围/特点典型用途torch.float32torch.float4 字节~6 位小数精度,通用 FP32CPU/GPU 默认,最高精度torch.float64torch.double8 字节~15 位小数精度(FP64)高精度科学计算torch.float16torch.half2 字节5 位指数 + 10 位小数(FP16)GPU 加速(如 NVIDIA TensorCore)torch.bfloat16-2 字节8 位指数 + 7 位小数(BF16)AI 训练(兼容 FP32 动态范围)torch.int8-1 字节[-128, 127]量化模型(低精度推理)torch.uint8-1 字节[0, 255]图像数据存储torch.int16torch.short2 字节[-32,768, 32,767]历史遗留场景torch.int32torch.int4 字节[-2³¹, 2³¹-1]索引或整数运算torch.int64torch.long8 字节[-2⁶³, 2⁶³-1]大整数或 ID 存储torch.bool-1 字节True/False逻辑运算或掩码2. Hugging Face transformers 的特殊参数在加载模型时,from_pretrained() 还支持以下简化参数:参数等效于说明"auto"-自动选择(优先 bfloat16 → float16 → float32)"fp32"torch.float32显式指定 FP32"fp16"torch.float16显式指定 FP16"bf16"torch.bfloat16显式指定 BF163. 不同硬件的推荐选择(1) CPU 环境优先 torch.float32:CPU 对 FP32 优化最好(支持 AVX/AVX2),且无 FP16/BF16 硬件加速。避免 torch.float16:需软件转换,反而更慢。(2) NVIDIA GPU(支持 TensorCore)训练/推理:torch.float16(FP16):最大化利用 TensorCore,速度快但需注意数值溢出。torch.bfloat16(BF16):更稳定的替代方案(需 Ampere+ 架构)。内存受限时:torch.int8(需量化库如 bitsandbytes)。(3) AMD/其他 GPU优先 torch.float32 或 torch.bfloat16:除非明确支持 FP16 加速。4. 代码示例(1) 显式指定 dtypefrom transformers import AutoModel # 加载为 FP32(CPU/通用) model_fp32 = AutoModel.from_pretrained("Qwen/Qwen2.5-Omni-7B", torch_dtype=torch.float32) # 加载为 BF16(适合现代 GPU) model_bf16 = AutoModel.from_pretrained("Qwen/Qwen2.5-Omni-7B", torch_dtype=torch.bfloat16) # 加载为 FP16(需 GPU 支持) model_fp16 = AutoModel.from_pretrained("Qwen/Qwen2.5-Omni-7B", torch_dtype=torch.float16) (2) 自动选择 dtypemodel_auto = AutoModel.from_pretrained("Qwen/Qwen2.5-Omni-7B", torch_dtype="auto") 5. 常见问题Q:torch_dtype 和 model.to(dtype) 的区别?torch_dtype:在加载模型时直接初始化权重为指定 dtype(更高效)。model.to(dtype):加载后在内存中转换 dtype(可能有额外开销)。Q:混合精度训练如何设置?需结合 torch_dtype 和 torch.cuda.amp:from torch.cuda.amp import autocast model = AutoModel.from_pretrained("Qwen/Qwen2.5-Omni-7B", torch_dtype=torch.float16).cuda() with autocast(): outputs = model(inputs) # 自动混合 FP16/FP32 总结场景推荐 dtype理由CPU 推理torch.float32硬件优化最好GPU 训练(现代)torch.bfloat16平衡速度和稳定性GPU 推理(低内存)torch.float16最大化吞吐量高精度科学计算torch.float64需要双精度时
  • 完美卸载/安装Linux下NVIDIA驱动
    1. 检查是否使用 .run 文件安装如果你之前是通过 NVIDIA 官方 .run 文件手动安装的驱动,通常会在系统中生成 nvidia-uninstall 脚本:which nvidia-uninstall # 检查是否存在卸载脚本 如果输出类似 /usr/bin/nvidia-uninstall,说明可以执行 NVIDIA 官方的卸载方式。2. 使用 nvidia-uninstall 卸载① 运行卸载脚本sudo nvidia-uninstall它会引导你完成卸载过程,按提示操作即可。完成后建议 重启系统:sudo reboot ② 如果 nvidia-uninstall 不存在如果 which nvidia-uninstall 无输出,可能是:你用 .run 文件安装时没有选择安装卸载脚本。你用系统包管理器(如 apt、dnf)安装的驱动,而不是 .run 文件。此时,你应该 使用系统的包管理器卸载(见前面的方法),而不是 nvidia-uninstall。3. 手动清理残留文件如果 nvidia-uninstall 运行后仍有问题,可以手动删除残留文件:sudo rm -rf /usr/lib/nvidia* # 删除 NVIDIA 库文件 sudo rm -rf /etc/X11/xorg.conf* # 删除 X11 配置文件(可能导致图形界面问题,谨慎操作) sudo rm -f /etc/modprobe.d/nvidia* # 删除内核模块配置 4. 验证卸载是否成功lsmod | grep nvidia # 检查内核模块是否存在(应该无输出) nvidia-smi # 应该报错 "command not found" glxinfo | grep -i opengl # 检查 OpenGL 是否回退到集成显卡 5. 重新安装驱动(可选)如果需要重装 NVIDIA 驱动:使用官方 .run 文件:chmod +x NVIDIA-Linux-*.run sudo ./NVIDIA-Linux-*.run使用系统包管理器(推荐):sudo apt update && sudo apt install nvidia-driver-535 # Ubuntu/Debian sudo dnf install nvidia-driver # Fedora/RHEL 6. 特殊情况Q1: nvidia-uninstall 报错?可能是权限问题,尝试:sudo /usr/bin/nvidia-uninstall如果仍然失败,用 apt purge 或 dnf remove 彻底卸载。Q2: 卸载后黑屏?可能是 X11 配置文件残留,尝试:sudo apt install xserver-xorg-video-nouveau # 切换回开源驱动(Ubuntu/Debian) sudo reboot 总结步骤命令查找卸载脚本which nvidia-uninstall运行卸载sudo nvidia-uninstall检查卸载`lsmod手动清理残留sudo rm -rf /usr/lib/nvidia*重装驱动sudo ./NVIDIA-Linux-*.run推荐优先使用 nvidia-uninstall,如果不存在再用系统包管理器卸载。
  • ubuntu22.04导入可信任的ca证书
    在 Ubuntu 22.04 中导入可信任的 CA 证书可以通过以下步骤完成:方法 1:使用 update-ca-certificates(推荐)将证书文件复制到指定目录证书文件需为 PEM 格式(扩展名通常为 .crt 或 .pem)。将证书复制到 /usr/local/share/ca-certificates/(系统级)或 /usr/share/ca-certificates/(推荐系统级):sudo cp your_ca.crt /usr/local/share/ca-certificates/更新证书信任库运行以下命令使系统信任新证书:sudo update-ca-certificates输出应显示 1 added(若成功导入)。验证证书检查证书是否在信任库中:openssl x509 -in /etc/ssl/certs/your_ca.pem -noout -subject或通过 curl 测试目标 HTTPS 站点:curl https://example.com方法 2:手动导入到 OpenSSL(适用于特定用户)将证书导入 OpenSSL 信任链sudo cp your_ca.crt /usr/share/ca-certificates/ sudo ln -s /usr/share/ca-certificates/your_ca.crt /etc/ssl/certs/your_ca.pem sudo update-ca-certificates方法 3:通过图形界面(适用于桌面版)打开 Settings → Privacy & Security → Certificates。点击 Import,选择证书文件并确认信任。注意事项证书格式:必须是 PEM 格式(ASCII 编码,以 -----BEGIN CERTIFICATE----- 开头)。若为 DER 格式,需先转换:openssl x509 -inform der -in your_ca.der -out your_ca.crt权限问题:确保证书文件可读(sudo chmod 644 /usr/local/share/ca-certificates/your_ca.crt)。系统范围生效:需 root 权限操作,仅对当前用户生效可导入到 ~/.pki/nssdb/(使用 certutil)。卸载证书sudo rm /usr/local/share/ca-certificates/your_ca.crt sudo update-ca-certificates --fresh完成上述步骤后,系统及大多数应用(如 curl、wget)将信任该 CA 签发的证书。
总条数:2015 到第
上滑加载中