华为云盘古气象大模型对接使用完全指南:从数据准备到API调用的全流程实战
1. 盘古气象大模型:AI重构天气预报的新范式
在气象预报领域,传统数值天气预报方法依赖超级计算机求解复杂的物理方程组,一次全球预报往往需要数小时的计算时间。华为云盘古气象大模型的问世彻底改变了这一格局——它将AI引入天气、海洋等前沿科学领域,融合了AI数据建模和AI方程求解方法,从海量数据中提取数理规律,利用神经网络编码微分方程。
盘古气象大模型由华为诺亚方舟实验室与科研团队联合研发,是全球首个登上《Nature》的气象AI大模型,开创了用AI取代传统数值模式的新思路。该模型水平空间分辨率达到0.25°×0.25°,可在几秒钟内完成全球未来10天的天气预测,精度超过传统数值预报方法,计算速度提升10000倍以上。其成功的关键在于创新的3D Earth-Specific Transformer(3DEST)架构,该架构能高效处理复杂且不均匀的三维气象数据,更好地学习大气变化的物理规律。
盘古气象大模型属于华为云盘古科学计算大模型体系的一部分,提供基础模型与工具链,支持客户自助训推。目前,盘古气象大模型的气象预测结果包括重力位势、湿度、风速、温度、海平面气压、降水等,可直接应用于多个气象研究细分场景。在实际应用中,盘古气象大模型已与多个气象机构深度合作:深圳市气象局与华为云联创的智霁模型提供未来7天深圳及周边地区空间分辨率3公里的预报产品;在泰国,盘古大模型将台风路径预测时间从5小时缩短到10秒。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. 准备工作:账号、服务订购与访问授权
2.1 账号注册与实名认证
使用华为云盘古气象大模型的第一步是注册华为云账号并完成实名认证。访问华为云官网,点击注册按钮,按照指引填写手机号、邮箱等信息完成注册。注册成功后,需进行实名认证——企业用户可选择企业认证,个人开发者可选择个人认证。实名认证是后续订购服务和使用API的必要前提。
2.2 订购盘古大模型服务
盘古大模型服务是华为云对外交付的整体解决方案,也是订购与计费的对象。进入华为云控制台,搜索盘古大模型或科学计算大模型,进入产品页面。盘古大模型为用户提供了服务试用,用户可根据需要提交试用申请,申请通过后方可试用盘古大模型功能。正式使用前,需要完成服务的订购操作。订购时需选择模型资产(如盘古气象大模型)、训练资源和推理资源。盘古大模型服务订购对接了公测系统,您在订购盘古大模型前需要先申请对应模型的公测,待申请通过后才能使用对应模型提供的服务。
2.3 配置服务访问授权
为了能够正常地存储数据、训练模型,需要配置盘古访问OBS(对象存储服务)的权限。在ModelArts Studio大模型开发平台中,进入管理控制台,找到访问授权配置页面,为盘古服务授予对OBS桶的读写权限。这一步骤至关重要,因为后续的数据集存储、训练输出、推理结果都将存放在OBS中。
2.4 创建并管理工作空间
平台支持用户自定义创建工作空间,并进行空间的统一管理。工作空间是隔离不同项目或团队的逻辑单元。登录ModelArts Studio大模型开发平台,在"我的空间"模块中单击进入所需空间,或创建新的工作空间。建议为气象大模型项目单独创建一个工作空间,以便于资源隔离和权限管理。
3. 数据工程:构建气象类数据集
盘古科学计算大模型仅支持接入气象类数据集。数据是模型训练的基础,构建高质量的气象数据集是获得精准预报结果的关键前提。
3.1 气象类数据集格式要求
气象类数据集需要按照平台规定的格式进行组织。数据通常采用NetCDF格式,这是一种广泛应用于气象和海洋学领域的自描述数据格式。在ModelArts Studio大模型开发平台中,使用数据工程创建盘古科学计算大模型数据集。
3.2 获取气象数据:ERA5再分析资料
对于希望自行运行盘古气象大模型的研究者,可以通过Climate Data Store(CDS)获取ERA5再分析资料。首先需要在CDS官网注册账号,然后获取CDS API key。将API key写入`~/.cdsapirc`文件。通过Python的`cdsapi`库,可以编写脚本下载模型所需的两类输入数据。
近地面变量(2D)包括海平面气压(MSLP)、10米纬向风(U10)、10米经向风(V10)和2米气温(T2M)。高空变量(3D)涵盖从1000hPa到50hPa的13个气压层上的位势(Z)、比湿(Q)、气温(T)、纬向风(U)和经向风(V)。把这些数据处理成模型所需的`.npy`格式文件,为后续预测打下基础。
以下是一个通过cdsapi下载ERA5数据的Python代码示例:
import cdsapi
c = cdsapi.Client()
# 下载近地面变量
c.retrieve(
'reanalysis-era5-single-levels',
{
'product_type': 'reanalysis',
'format': 'netcdf',
'variable': [
'mean_sea_level_pressure',
'10m_u_component_of_wind',
'10m_v_component_of_wind',
'2m_temperature'
],
'year': '2020',
'month': '01',
'day': ['01', '02', '03'],
'time': ['00:00', '06:00', '12:00', '18:00'],
},
'download_surface.nc')
# 下载高空变量
c.retrieve(
'reanalysis-era5-pressure-levels',
{
'product_type': 'reanalysis',
'format': 'netcdf',
'variable': [
'geopotential',
'specific_humidity',
'temperature',
'u_component_of_wind',
'v_component_of_wind'
],
'pressure_level': [
'1000', '925', '850', '700', '600', '500',
'400', '300', '250', '200', '150', '100', '50'
],
'year': '2020',
'month': '01',
'day': '01',
'time': '00:00',
},
'download_pressure.nc')4. 模型推理:运行盘古气象大模型
4.1 环境配置
推荐使用Anaconda管理Python环境。通过Anaconda,用户可以轻松创建和管理虚拟环境,确保项目的依赖包和运行环境的一致性。
首先克隆盘古气象大模型的开源项目代码。以社区流行的Pangu-Weather-ReadyToGo项目为例:
git clone https://github.com/HaxyMoly/Pangu-Weather-ReadyToGo.git
cd Pangu-Weather-ReadyToGo使用conda创建虚拟环境并安装依赖包。根据硬件配置选择CPU或GPU环境:
# 创建虚拟环境
conda create -n pangu python=3.8
conda activate pangu
# CPU环境
pip install onnxruntime numpy netCDF4 matplotlib
# GPU环境(需CUDA支持)
pip install onnxruntime-gpu numpy netCDF4 matplotlib4.2 下载模型文件
盘古气象大模型提供了四种不同预测时长的ONNX模型文件:1小时、3小时、6小时和24小时。这些模型文件可以从官方或社区提供的链接下载。将下载的模型文件放置在项目的指定目录中。
4.3 执行单步预测
通过运行推理脚本,加载初始气象场数据,调用模型生成天气预报结果。使用CPU推理时运行`inference_cpu.py`,使用GPU推理时运行`inference_gpu.py`。仅需几十秒(GPU)或一分多钟(CPU)即可生成24小时后的全球气象预报结果。
以下是一个简化的单步预测代码示例:
import onnxruntime as ort
import numpy as np
import netCDF4 as nc
def load_initial_data(file_path):
"""加载初始气象场数据"""
data = nc.Dataset(file_path)
# 提取所需的变量数据并转换为numpy数组
# 具体实现取决于数据格式
return np.array(data.variables['t'][:]) # 示例:提取温度数据
def run_single_step_prediction(model_path, input_data):
"""执行单步预测"""
# 加载ONNX模型
session = ort.InferenceSession(model_path)
# 准备输入
input_name = session.get_inputs()[0].name
# 执行推理
outputs = session.run(None, {input_name: input_data.astype(np.float32)})
return outputs[0]
if __name__ == "__main__":
# 加载初始数据
initial_field = load_initial_data('input_data.nc')
# 执行24小时预测
forecast_24h = run_single_step_prediction(
'models/pangu_weather_24h.onnx',
initial_field
)
print(f"预测结果形状: {forecast_24h.shape}")4.4 实现迭代预测
更有趣的是,项目还提供了迭代预测功能。通过将上一次的预测结果作为下一次的输入,可以连续预测多天的天气。这种方式可以实现从初始时刻起连续多日的天气预报。
迭代预测的核心代码如下:
def iterative_forecast(initial_field, model_24h, model_6h, model_3h, model_1h, days=10):
"""
迭代预测多日天气
Args:
initial_field: 初始气象场
model_24h: 24小时预测模型
model_6h: 6小时预测模型
model_3h: 3小时预测模型
model_1h: 1小时预测模型
days: 预测天数
Returns:
list: 每日预测结果列表
"""
results = []
current_field = initial_field
for day in range(days):
# 使用24小时模型进行日预测
next_field = run_single_step_prediction(model_24h, current_field)
results.append(next_field)
current_field = next_field
return results
# 使用示例
forecasts = iterative_forecast(
initial_field=load_initial_data('input_data.nc'),
model_24h='models/pangu_weather_24h.onnx',
model_6h='models/pangu_weather_6h.onnx',
model_3h='models/pangu_weather_3h.onnx',
model_1h='models/pangu_weather_1h.onnx',
days=10
)
for i, forecast in enumerate(forecasts):
print(f"第{i+1}天预测完成,数据形状: {forecast.shape}")4.5 结果可视化
预测结果可以通过Matplotlib等库进行可视化展示。例如,可以绘制全球温度分布图、风速矢量图、气压等值线图等。以下是一个简单的可视化代码示例:
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature
def plot_temperature_forecast(temperature_data, title="Temperature Forecast"):
"""绘制全球温度预报图"""
fig = plt.figure(figsize=(12, 6))
ax = plt.axes(projection=ccrs.PlateCarree())
# 添加海岸线和国家边界
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.BORDERS, linestyle=':')
# 绘制温度数据
# 注意:temperature_data需要是经纬度网格数据
im = ax.contourf(
lon_grid, lat_grid, temperature_data,
transform=ccrs.PlateCarree(),
cmap='RdBu_r', levels=20
)
plt.colorbar(im, ax=ax, orientation='horizontal',
pad=0.05, label='Temperature (K)')
ax.set_title(title)
plt.show()
# 使用示例(假设已定义lon_grid和lat_grid)
# plot_temperature_forecast(forecasts[0][0, :, :])5. 模型部署:将盘古气象大模型部署为在线服务
5.1 在ModelArts Studio中部署模型
训练或获取模型后,可以在ModelArts Studio大模型开发平台中将模型部署为在线服务。登录ModelArts Studio平台,在"我的空间"模块中单击进入所需空间。在左侧导航栏中选择"模型开发 > 模型部署",单击界面右上角"创建部署"。在"选择模型"页面选择需要部署的模型,配置部署参数。
盘古科学计算的全部模型的训练、在线部署与边缘部署依赖ARM+Snt9B3资源。部署完成后,系统会生成模型的API调用地址。
5.2 获取API调用凭证
调用部署后的模型API,需要获取认证凭证。调用API有两种认证方式:Token认证和API Key认证。
Token认证:登录"我的凭证 > API凭证"页面,获取user name、domain name、project id。由于盘古大模型当前部署在特定区域,需要获取与该区域对应的project id。获取Token之后,就可以使用Token认证调用盘古大模型服务API。
API Key认证:当用户部署的模型服务期望开放给其他用户调用时,使用原有的Token认证需要进行动态认证鉴权和凭证管理,操作繁杂。此时可使用API Key认证。使用该鉴权方式前,请确保有已部署的大模型。
5.3 调用API进行预测
盘古大模型提供了REST风格的API,支持通过HTTPS请求调用。调用API时,需要用户网络可以访问公网。API请求体的大小不超过12MB,超过后请求会被拦截。因APIG(API网关)限制,平台每次请求预测的时间不超过40秒。
以下是通过Token认证调用API的Python代码示例:
import requests
import json
def get_iam_token(iam_url, user_name, password, domain_name, project_id):
"""获取IAM Token"""
headers = {'Content-Type': 'application/json'}
body = {
"auth": {
"identity": {
"methods": ["password"],
"password": {
"user": {
"name": user_name,
"password": password,
"domain": {"name": domain_name}
}
}
},
"scope": {
"project": {"id": project_id}
}
}
}
response = requests.post(iam_url, headers=headers, data=json.dumps(body))
return response.headers.get('X-Subject-Token')
def call_pangu_api(api_url, token, input_data):
"""调用盘古气象大模型API"""
headers = {
'Content-Type': 'application/json',
'X-Auth-Token': token
}
body = {
"input": input_data.tolist() # 将numpy数组转换为列表
}
response = requests.post(api_url, headers=headers, data=json.dumps(body))
return response.json()
# 使用示例
iam_url = "https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens"
api_url = "https://modelarts.cn-north-4.myhuaweicloud.com/v1/projects/{project_id}/services/{service_id}/predict"
# 获取Token
token = get_iam_token(
iam_url=iam_url,
user_name="your_username",
password="your_password",
domain_name="your_domain",
project_id="your_project_id"
)
# 准备输入数据(示例)
input_data = np.random.randn(13, 721, 1440).astype(np.float32) # 13个气压层 × 721 × 1440网格
# 调用API
result = call_pangu_api(api_url, token, input_data)
print(f"预测结果: {result}")以下是通过API Key认证调用API的Python代码示例:
import requests
import json
def call_pangu_api_with_apikey(api_url, api_key, input_data):
"""使用API Key认证调用盘古气象大模型API"""
headers = {
'Content-Type': 'application/json',
'X-Api-Key': api_key
}
body = {
"input": input_data.tolist()
}
response = requests.post(api_url, headers=headers, data=json.dumps(body))
return response.json()
# 使用示例
api_url = "https://modelarts.cn-north-4.myhuaweicloud.com/v1/projects/{project_id}/services/{service_id}/predict"
api_key = "your_api_key"
result = call_pangu_api_with_apikey(api_url, api_key, input_data)
print(f"预测结果: {result}")6. 模型微调:定制化气象预测
盘古气象大模型支持用户基于自有数据进行微调训练。在ModelArts Studio平台中,用户可以创建科学计算大模型中期天气要素预测微调任务。登录ModelArts Studio大模型开发平台,在"我的空间"模块中单击进入所需空间。按照平台指引配置训练参数、选择数据集、启动训练任务。
微调阶段通过在特定领域的数据集上进一步训练,使模型能够更有效地应对具体的任务需求。通过微调,可以使盘古气象大模型更好地适应特定区域的气候特征或特定类型的气象预测任务。例如,深圳市气象局联合华为云率先开展人工智能区域预报模型联创研发,以华为云盘古气象大模型为基础,融合区域高质量气象数据集,可快速得到未来5天深圳及周边地区空间分辨率为3公里的预报。
7. 应用场景与二次开发
盘古气象大模型适用于多种气象预测场景,包括短期天气预报、中长期气候预测等。通过高精度的预测结果,用户可以更好地应对极端天气事件,提高灾害预警和应急响应能力。
在农业生产中,准确的天气预报对于农作物的种植、灌溉和收获具有重要意义。盘古气象大模型可以为农业生产提供可靠的气象数据支持。能源行业对天气预报的依赖性也很高,特别是在风能和太阳能发电领域。盘古气象大模型可以提供精确的风速和日照预测,帮助能源企业优化能源生产和调度。
开发者可以通过华为云MCP Server气象在线MCP服务接口,轻松调取全球天气预报、天气实况、分钟级降水预报、气象灾害预警等专业气象服务数据,快速融入自己的大模型应用。华为云计算技术有限公司以盘古气象大模型为核心,以全球多源监测数据构建的分析场数据为基础,构建形成高质量的气象预报数据,赋能气象、农业、环保、能源等行业落地应用。
8. 常见问题解答
Q1:盘古气象大模型是否免费使用?
盘古大模型为用户提供了服务试用,用户可根据需要提交试用申请,申请通过后方可试用盘古大模型功能。正式使用前需要完成服务的订购操作。具体费用请参考华为云官网的定价页面。
Q2:运行盘古气象大模型需要什么硬件配置?
盘古气象大模型支持CPU和GPU两种运行环境。CPU环境使用onnxruntime即可运行,GPU环境需要CUDA支持和onnxruntime-gpu。个人电脑或高性能服务器均可运行。
Q3:盘古气象大模型的预测精度如何?
盘古气象大模型是首个精度超过传统数值预报方法的AI模型。在位势、湿度、风速、温度等多个关键气象要素上,其1小时至7天预测精度均超越了欧洲气象中心的operational IFS等传统数值方法。欧洲中期预报中心和中央气象台等都在实测中发现盘古预测的优越性。
Q4:如何获取盘古气象大模型的输入数据?
可以通过Climate Data Store(CDS)获取ERA5再分析资料。在CDS官网注册账号并获取API key后,使用Python的cdsapi库下载数据。数据包括近地面变量(2D)和高空变量(3D)两类。
Q5:盘古气象大模型支持哪些预测时间分辨率?
盘古气象大模型提供了四种不同预测时长的模型:1小时、3小时、6小时和24小时。用户可以根据需要选择合适的时间分辨率进行预测。
Q6:如何将盘古气象大模型集成到自己的业务系统中?
可以通过两种方式集成:一是直接在本地或服务器上运行开源模型进行推理预测;二是通过ModelArts Studio将模型部署为在线服务,通过REST API进行调用。API调用支持Token认证和API Key认证两种方式。



