ENGLISH | 简体中文
MindSpore SciAI是基于昇思MindSpore打造的AI4SCI高频基础模型套件,内置了60+高频模型,覆盖物理感知(如PINNs、DeepRitz以及PFNN)和神经算子(如FNO、DeepONet、PDENet)等主流模型,覆盖度全球第一;
提供了高阶API(一键环境配置,自动模型加载、极简训练微调等),开发者和用户开箱即用。
MindSpore SciAI应用领域覆盖到了流体、电磁、声、热、固体、生物等众多学科,为广大开发者和用户提供了高效、易用的AI4Science通用计算平台。
SciAI由以下主要目录组成。
├── SciAI
│ ├── cmake # 编译脚本
│ ├── docs # 文档
│ │ ├── FAQ # 常见问题解答
│ ├── sciai # SciAI主目录
│ │ ├── architecture # 神经网络基本模块
│ │ ├── common # 通用模块
│ │ ├── context # 上下文设置
│ │ ├── model # **AI4SCI高频模型**
│ │ ├── operators # 高阶微分
│ │ └── utils # 其他辅助功能
│ └── tutorial # 教学模型
SciAI基础模型库提供了丰富的科学计算高频模型,下表中汇总了当前已实现的网络模型及其对应领域。
注: 带有“*”的网络模型为MindSpore与MindScience先前已发布网络。
由于SciAI与MindSpore有依赖关系,请根据下表中所指示的对应关系,
在MindSpore下载页面下载并安装对应的.whl
包。
SciAI 版本 | 分支 | MindSpore 版本 | Python 版本 |
---|---|---|---|
0.1.0 | master | >=2.2.0 | =3.7 |
其他依赖项请参照 requirements.txt,
并且可通过如下命令安装。
pip install -r requirements.txt
已支持的硬件平台和操作系统见下表。
硬件平台 | 操作系统 | 状态 |
---|---|---|
Ascend 910 | Ubuntu-x86 | ✅ |
Ubuntu-aarch64 | ✅ | |
EulerOS-aarch64 | ✅ | |
CentOS-x86 | ✅ | |
CentOS-aarch64 | ✅ | |
GPU CUDA 11.1 | Ubuntu-x86 | ✅ |
此方式不用克隆源码编译,而是自动下载安装MindSpore官方提供的whl包。注:此安装方式目前暂不支持,将于Mindspore 2.2.0正式发布后支持。
pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.2.0/MindScience/sciai/gpu/{arch}/cuda-11.1/sciai-{version}-cp37-cp37m-linux_{arch}.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
- 在联网状态下,安装whl包时会自动下载SciAI安装包的依赖项(依赖项详情参见setup.py)。
- {version}表示SciAI版本号,例如下载0.1.0版本SciAI时,{version}应写为
0.1.0
。- {arch}表示系统架构,例如使用的Linux系统是x86架构64位时,{arch}应写为
x86_64
。如果系统是ARM架构64位,则写为aarch64
。
下表提供了各架构和Python版本对应的安装命令。
设备 | 架构 | Python | 安装命令 |
---|---|---|---|
Ascend | x86_64 | Python=3.7 | pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.2.0/MindScience/sciai/gpu/x86_64/cuda-11.1/sciai-0.1.0-cp37-cp37m-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple |
aarch64 | Python=3.7 | pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.2.0/MindScience/sciai/ascend/aarch64/sciai-0.1.0-cp37-cp37m-linux_aarch64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple |
|
GPU | x86_64 | Python=3.7 | pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.2.0/MindScience/sciai/gpu/x86_64/cuda-11.1/sciai-0.1.0-cp37-cp37m-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple |
注意:如果您的conda或python env中已经安装了其他MindScience套件,如MindElec
,MindFlow
,MindSponge
,
请先卸载环境中的MindScience套件避免pip行为冲突。
克隆MindScience代码Git仓库。
cd ~
git clone https://gitee.com/mindspore/mindscience.git
使用脚本build.sh
编译SciAI。
cd mindscience/SciAI
bash build.sh -j8
编译完成后,通过如下命令安装编译所得.whl
包。
bash install.sh
执行如下命令,如果没有报错No module named 'sciai'
,则说明安装成功。
python -c 'import sciai'
SciAI基础模型库对外提供两种模型的训练和评估方式,为开发者提供灵活且简洁的使用方式和高阶开发接口。
使用AutoModel.from_pretrained
接口获取已支持的网络模型。
使用AutoModel.train
实现模型的训练,并且在执行训练之前,
可使用AutoModel.update_config
调整训练参数或加载.ckpt
文件实现模型微调。
接口AutoModel.update_config
可选参数依赖于模型类型,
具体可参考网络模型库中MindSpore实现与网络参数
链接。
from sciai.model import AutoModel
# 获取`cpinns`网络模型
model = AutoModel.from_pretrained("cpinns")
# 使用默认参数训练网络,生成的图片、数据与日志将保存至用户的执行目录中
model.train()
# 或者加载`.ckpt`文件
model.update_config(load_ckpt=True, load_ckpt_path="./checkpoints/your_file.ckpt", epochs=500)
# 基于新加载的参数,继续训练模型,实现微调
model.train()
用户可以使用AutoModel.evaluate
评估训练结果。
该接口将默认加载SciAI模型库中提供的.ckpt
文件用于评估,用户也可以调用model.update_config
接口自定义加载的文件。
from sciai.model import AutoModel
# 获取`cpinns`网络模型
model = AutoModel.from_pretrained("cpinns")
# 加载网络默认的ckpt文件,评估网络模型
model.evaluate()
# 自定义加载ckpt文件(可选)
model.update_config(load_ckpt=True, load_ckpt_path="./checkpoints/your_file.ckpt")
# 评估网络模型
model.evaluate()
用户可以在脚本运行目录下发现名为 auto_model_xxx
的目录,该目录下包含 checkpoints
、 data
、 figures
、 logs
四个子目录,分别
包含检查点、数据、图片、日志,用户可在这些目录中查看训练结果。例如:
├── auto_model_cpinns
│ ├── checkpoints # checkpoint文件
│ ├── data # 数据文件
│ ├── figures # 结果图片
│ └── logs # 日志文件
AutoModel.update_config(**kwargs)
支持修改网络参数,包括学习率、训练周期、混合精度等级、动静态图、数据读取保存路径、checkpoints文件加载路径等,
具体请参考网络模型库中MindSpore实现与网络参数
链接。常用的可配置参数见下表:
parameter | description | default value |
---|---|---|
save_ckpt | 是否保存checkpoint | true |
save_fig | 是否保存和绘制图片 | true |
load_ckpt | 是否加载checkpoint | false |
save_ckpt_path | checkpoint保存路径 | ./checkpoints |
load_data_path | 加载数据的路径 | ./data |
save_data_path | 保存数据的路径 | ./data |
load_ckpt_path | checkpoint加载路径 | ./checkpoints/model_final.ckpt |
figures_path | 图片保存路径 | ./figures |
log_path | 日志保存路径 | ./logs |
print_interval | 时间与loss打印间隔 | 10 |
ckpt_interval | checkpoint保存间隔 | 1000 |
lr | 学习率 | 8e-4 |
epochs | 时期(迭代次数) | 15001 |
download_data | 模型所需数据集与(或)checkpoints | cpinns |
force_download | 是否强制下载数据 | false |
amp_level | MindSpore自动混合精度等级 | O3 |
device_id | 需要设置的设备号,None则为默认设备号 | None |
mode | MindSpore静态图模式(0)或动态图模式(1) | 0 |
用户可能会遇到自动下载的模型参数.ckpt
文件或数据集被误删的情况,可以通过如下方式更新参数,强制重新下载:
model.update_config(force_download=True)
如果您希望查看源码逻辑或对模型做出自定义修改,可通过源码的train.py
与eval.py
入口运行模型。
首先使用如下命令直接克隆整个仓库并准备环境变量,运行文件.env
会将SciAI项目目录添加至环境变量PYTHONPATH
中。
git clone https://gitee.com/mindspore/mindscience
source ./mindscience/SciAI/.env
完成后,可以参考网络模型库中各个模型README_CN.md
的快速开始章节,使用源码进行训练与推理。以下介绍以模型cpinns
为例:
使用训练脚本train.py
进行网络模型训练
cd ./mindscience/SciAI/sciai/model/cpinns/
python ./train.py [--parameters]
.ckpt
文件微调:python ./train.py --load_ckpt true --load_ckpt_path {your_ckpt_file.ckpt} [--parameters]
使用脚本eval.py
对已完成训练的网络模型进行评估。
python ./eval.py [--parameters]
可配置参数[--parameters]
包括学习率、训练周期、数据读取保存路径、checkpoints文件加载路径等,
具体请参考网络模型库中MindSpore实现与网络参数
链接。
有关安装指南、教程和API的更多详细信息,请参阅用户文档。
如果在使用问题中遇到问题,可以参考FAQ。
查看MindSpore如何进行开放治理。
欢迎参与贡献。更多详情,请参阅我们的贡献者Wiki。
版本说明请参阅RELEASE。
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》