前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >AiiDA 开源数据管理软件

AiiDA 开源数据管理软件

作者头像
zhonger
发布于 2022-10-28 03:10:23
发布于 2022-10-28 03:10:23
1.9K00
代码可运行
举报
文章被收录于专栏:仲儿的专栏仲儿的专栏
运行总次数:0
代码可运行

前言

  对于机器学习来说,模型和数据是非常重要的。而模型与数据相比,模型即便是优化得再好,数据不够、不好的话,最终也不能得到一个好的预测结果。因此,我们在使用机器学习方法去建立某个领域模型的同时,也要注意相关原始数据的收集和整理。当我们需要通过庞大的计算量来获取数据的时候,通常可能需要使用大型服务器集群,甚至高性能集群、超算等等。这个时候,即使我们提交的计算在一段时间后得到了结果,恐怕也会是很多个结果文件,我们也很难从这些文件中抽取出我们关心的、想要的某些数据,更难将其整理成可直接用于机器学习的数据格式。

  面对着这些问题,通常我们会想到可以建立一个数据库,再写一些脚本去自动解析文件内容、抽取关键字段和数值,甚至说为了编程可达需要给数据库设计一套 RESTful API 或者 GraphQL API。这样听起来工程量略大,但是一旦做好那么就可以建立类似于 Materias Project 等等那样的专业领域数据库。其实,我们并没有必要从零开始去做这些,因为现在已经有了开源数据管理软件 AiiDA

  AiiDA 是一个使用 Python 编写的开源复杂工作流设计和管理框架,旨在帮助从事计算科学(计算材料学,计算生物学等)的相关研究者可以更好地管理、编写、使用和分享复杂的工作流以及计算产生的有用数据。它使得在研究中复杂的计算流程的可重复性得以保证。AiiDA 实现并支持了 ADES 模式的四大基石: (A)utomation(自动), (D)ata(数据), (E)nvironment(社区环境), 和 (S)haring (分享). AiiDA 支持的一些典型特性包括:

  • 工作流: AiiDA 可以用来创建并执行复杂的、自动文档化的工作流来连接本地和远端计算资源上的多个计算代码。
  • 高通量: AiiDA 的基于事件的工作流引擎支持成百上千(每小时)的带有检查点的计算例程。
  • 数据可验证性: AiiDA 自动追踪所有可验证性图中 (provenance graph) 的输入、输出和元数据,以保证计算的完全可重复性。
  • 高级的查询检索特性: AiiDA 的查询语言支持千万个节点的快速图查询。
  • 插件接口:: AiiDA 可以通过插件来支持各种计算代码,和各种数据分析工具,各种数据类型,任务调度工具以及远程连接方式等 (参见公共插件库)。
  • 高性能集群接口: AiiDA 支持无缝地把你的计算从一个集群转换到另一个集群运行。AiiDA 兼容各种任务调度软件 SLURM, PBS Pro, torque, SGE 或者 LSF ,对这些任务调度工具 AiiDA 都是源生支持的。
  • 开放科学: AiiDA 可以将全部或部分的数据库导出,以便于和同行分享,或上传至 Materials Cloud 以便 归档 和 检索 。
  • 开源: AiiDA 通过 MIT 开源协议 发布。

安装

  AiiDA 官网向用户提供了很多种安装方式,其中最简单的就是使用 Docker 一键式安装。这里不仅介绍由 AiiDA 团队构建的 aiida-team/aiida-core 镜像,也介绍具有多种集成环境的 Quantum Mobile 镜像。除了 Docker 方式外,AiiDA 也可以直接在 Linux/Mac 系统上安装。考虑到 AiiDA 部署在 Linux 服务器操作系统上更为合适,这里就分别介绍使用 root 用户和非 root 用户如何安装 AiiDA 整体环境。

Docker 安装

单独环境

  使用以下 docker-compose.yml 文件和命令 docker-compose up -d 即可启动一个 aiida-team/aiida-core 容器实例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# docker-compose.yml
version: '3.9'

services:
  aiida:
    image: aiidateam/aiida-core:1.3.0
    container_name: aiida
    stdin_open: true
    tty: true
    volumes: 
      - ./data:/home/aiida/data
    restart: always
    networks:
       extnetwork:
          ipv4_address: 192.168.18.2

networks:
   extnetwork:
      ipam:
         config:
         - subnet: 192.168.18.0/24
           gateway: 192.168.18.1
多软件环境

  使用以下 docker-compose.yml 文件和命令 docker-compose up -d 即可启动一个 quantum-mobile 容器实例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# docker-compose.yml
version: '3.4'

services:
  quantum-mobile:
    # using the required tag
    image: "marvelnccr/quantum-mobile:20.11.2a"
    container_name: quantum-mobile
    expose:
      - "8888" # AiiDa Lab
      - "8890" # Jupyter Lab
      - "5000" # REST API
      - "22"   # SSH
    ports:
      # local:container
      - "8888:8888"
      - "8890:8890"
      - "22:22"
      - "5000:5000"
    # privileged mode and mounting the cgroup are required for correctly running sytsemd inside the container (set as the default command)
    privileged: true
    volumes:
      - "/sys/fs/cgroup:/sys/fs/cgroup:ro"
    environment:
      LC_ALL: "en_US.UTF-8"
      LANG: "en_US.UTF-8"
    healthcheck:
      # check that the daemon has been started for the 'generic' profile
      # can take a few minutes to start
      test: systemctl is-active --quiet aiida-daemon@generic.service
      interval: 30s
      retries: 6
      start_period: 30s

root 用户安装

  由于 root 用户对系统具有绝对的管理权限,所以使用 root 用户安装 AiiDA 环境时比较简单,可以直接通过 APT 源安装 PostgreSQL、RabbitMQ 和 AiiDA。如下所示,完成这三种软件的安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# AiiDA 是一个 python 编写的软件,所有需要 python 环境和 pip 包管理工具
sudo apt-get install git python3-dev python3-pip

# 安装 PostgreSQL 服务器与客户端命令
sudo apt-get install postgresql postgresql-server-dev-all postgresql-client

# 安装 RabbitMQ 服务器并查询当前状态
sudo apt-get install rabbitmq-server
sudo rabbitmqctl status

# 安装 AiiDA
pip install aiida-core

  具体配置 PostgreSQL 数据库和 AiiDA 与下一节中非 root 用户安装中相同,请参照下面内容。

非 root 用户安装

  当我们在使用内网服务器时,很大可能我们只是一个普通用户,并没有管理员权限。所以如果想要以一个非 root 用户的身份来安装部署 AiiDA 服务是否也有可能呢?事实上是可以实现的,因为组成 AiiDA 运行环境的三个软件都可以以非 root 用户安装、启动。为了简化安装软件过程,这里我们采用了 Anaconda 来帮助我们更快、更简单地安装部署环境。(后续,笔者将会为服务器上的 Anaconda 使用特别写一篇文章进行详细介绍,这里默认已安装有 Anaconda。)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启动 Anaconda 环境
~/anaconda3/etc/profile.d/conda.sh
安装 PostgreSQL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 从 conda-forge 频道安装 PostgreSQL
conda install -c conda-forge postgresql
配置和启动 PostgreSQL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建 PostgreSQL 数据存储目录
# 为了更好地区别是从 conda 安装的 PostgreSQL,特别将存储目录放置在 conda 配置目录下
mkdir -p /home/lisz/.conda/envs/pgsql/data

# 指定数据存储目录并后台启动 PostgreSQL,同时也开启日志记录功能
pg_ctl -D /home/lisz/.conda/envs/pgsql/data -l logfile start

# 查看是否正常启动并监听端口 5432
(base) ➜  data lsof -i:5432 
COMMAND    PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
postgres 33906 lisz    3u  IPv6 66936721      0t0  TCP localhost:postgres (LISTEN)
postgres 33906 lisz    4u  IPv4 66936722      0t0  TCP localhost:postgres (LISTEN)

# 使用当前 Linux 用户身份认证直接进入 PostgreSQL 默认数据库
# 进入后是 PostgreSQL 的 shell 交互界面
psql -d  postgres
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 输入以下命令完成创建用户 aiida、数据库 aiidadb,并给用户赋给该数据库的完全权限
CREATE USER aiida WITH PASSWORD '<password>';
CREATE DATABASE aiidadb OWNER aiida ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;
GRANT ALL PRIVILEGES ON DATABASE aiidadb to aiida;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用 \q 即可退出刚才的 PostgreSQL 提供的 shell
# 测试 aiida 用户是否可以使用密码从本地成功登录 aiidadb 数据库
psql -h localhost -d aiidadb -U aiida -W
# 输入密码后,出现 PostgreSQL 的 shell 即登录成功
安装 RabbitMQ
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 从 conda-forge 频道安装 RabbitMQ 服务器
conda install -c conda-forge rabbitmq-server
配置和启动 RabbitMQ
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 让 RabbitMQ 使用默认配置在后台启动
rabbitmq-server -detached

# 开启 Web 管理插件
rabbitmq-plugins enable rabbitmq_management

# 查看状态,验证是否正常启动
rabbitmq-server status

# 查看是否正常监听 5672 端口
(base)~ lsof -i:5672             
COMMAND    PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
beam.smp 33967 lisz   95u  IPv6 66919827      0t0  TCP *:amqp (LISTEN)

  由于 RabbitMQ 是消息队列,这里没有持久化和验证的需求,所有可以直接使用默认配置启动即可。验证正常启动后,可浏览 http://localhost:15627 来访问 RabbitMQ 的 Web 界面,默认管理员账号和密码均为 guest。这里需要注意的是,如果是服务器安装,本地机器是需要使用 ssh 代理端口的功能把服务器端的 15627 端口代理到本地的 15627 端口之后才能正常访问。当然,笔者建议使用 VS Code 来远程连接服务器,然后就可以使用 VS Code 提供的界面简单操作代理远程端口到本地。

安装 AiiDA
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 从 pypi 安装 AiiDA 核心程序
pip install aiida-core

# 如果上述安装过程提示 conda 需要 pathlib 的 error,可以直接安装并重载 AiiDA 配置
conda install pathlib
reentry scan
配置和启动 AiiDA
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 为 AiiDA 配置用户信息、数据库连接信息以及消息队列连接信息
(base)~ verdi setup
Info: enter "?" for help
Info: enter "!" to ignore the default and set no value
Profile name: conquest
Email Address (for sharing data): xxxx@xxx.xxx
First name: Ben
Last name: Li
Institution: NIMS
Database engine (postgresql_psycopg2) [postgresql_psycopg2]: 
Database backend (django, sqlalchemy) [django]: 
Database host: localhost
Database port [5432]: 
Database name: aiidadb
Database username: aiida
Database password: 
Broker protocol (amqp, amqps) [amqp]: 
Broker username [guest]: 
Broker password [guest]: 
Broker host [127.0.0.1]: 
Broker port [5672]: 
Broker virtual host name []:        
Repository directory [/home/lisz/.aiida/repository/conquest]:

  至此,AiiDA 的所有软件环境就已经完全配置好了,试试觉得也不是那么难哈。

验证安装

  AiiDA 的验证安装主要是检查:

  • AiiDA 主程序是否在后台正常运行?
  • verdi shell 是否能正常使用?
  • AiiDA 与数据库、消息队列是否连接正常?
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# verdi daemon status 检查后台情况
# 如果没有启动使用 verdi daemon start 启动
(base)~ verdi daemon status
Profile: conquest
Daemon is running as PID 25383 since 2021-05-12 16:06:03
Active workers [1]:
  PID    MEM %    CPU %  started
-----  -------  -------  -------------------
25387     0.02        0  2021-05-12 16:06:03
Use verdi daemon [incr | decr] [num] to increase / decrease the amount of workers

# verdi shell 进入 shell,如果无法进入则证明配置仍然存在错误
(base)~ verdi shell
Python 3.8.10 | packaged by conda-forge | (default, May 11 2021, 07:01:05) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.23.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: exit()

# verdi status 查看 AiiDA 的各项配置,包括自身及与其他软件之间的连接
(base)~ verdi status
 ✔ config dir:  /home/lisz/.aiida
 ✔ profile:     On profile conquest
 ✔ repository:  /home/lisz/.aiida/repository/conquest
 ✔ postgres:    Connected as aiida@localhost:5432
 ✔ rabbitmq:    Connected as amqp://guest:guest@127.0.0.1:5672?heartbeat=600
 ✔ daemon:      Daemon is running as PID 25383 since 2021-05-12 16:06:03

后续使用

  当我们已经有了 AiiDA 的完整环境之后,我们就会想要知道该如何使用 AiiDA 为计算服务呢。由于笔者是做第一性原理计算和机器学习的研究,所以后续将以 AiiDA 和 CONQUEST 的搭配使用为实例来介绍 AiiDA 的数据管理用法。

参考资料

版权声明:如无特别声明,本文版权归 仲儿的自留地 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:《 AiiDA 开源数据管理软件 》

本文链接:https://cloud.tencent.com/developer/article/2143011

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AiiDA 与 Quantum Espresso
Quantum Espresson (以下简称 QE)是一款基于平面波函数的开源第一性原理计算框架,其免费、易安装使用等优点受到了广大第一性原理计算研究人员的喜爱。QE 不仅支持 CPU 的并行高性能计算,还支持 GPU 计算。这看起来有点像是计算机专业里的深度学习框架,有完整的计算加速支持。另外,QE 与 VASP 的使用习惯类似度比较高,不管是输入文件还是赝势文件,都可以类比着使用。对于计算后的输出结果,QE 也有一套完整的工具链辅助用户完成一些常用的分析操作,比如寻找 k 路径、分析能带结构(Band Gap)等等。
zhonger
2022/10/28
8160
使用Docker-compose来封装celery4.1+rabbitmq3.7服务,实现微服务架构
    大家都知道,Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,在之前的一篇文章中:python3.7+Tornado5.1.1+Celery3.1+Rabbitmq3.7.16实现异步队列任务 详细阐述了如何进行安装部署和使用,但是过程太繁琐了,先得安装Erlang,再安装rabbitmq,然后各种配置,最后由于async关键字问题还得去修改三方库的源码,其实我们可以通过docker来将celery服务封装成镜像,如此一来,以后再使用celery或者别的系统依赖celery,我们只需要将该镜像以容器的形式跑服务即可,不需要繁琐的配置与安装。
用户9127725
2022/08/08
4010
使用Docker-compose来封装celery4.1+rabbitmq3.7服务,实现微服务架构
JupyterLab 的搭建与运维
Jupyter, 想必大家对这个项目都耳熟能详吧。因为能够实时交互、支持异构计算、部署简单、几乎无运维成本,所以得到了很多人的青睐。笔者的身边也有很多从事科学研究的人选择了 Jupyter 作为编写 Python 的工具,当然也有一部分人选择了 PyCharm。不过笔者还是比较喜欢 VS Code,简单的纯文本编辑功能,利用丰富的插件市场来添加各种想要的功能,无缝支持远程开发,简直就是理想中的编辑器了。但是,今天还是要来考虑一下 Jupyter,毕竟 JupyterLab 的服务功能也是非常强大的。
zhonger
2022/10/28
2.3K0
JupyterLab 的搭建与运维
Docker下RabbitMQ四部曲之二:细说RabbitMQ镜像制作
本章是《Docker下RabbitMQ四部曲》系列的第二篇,将详细简述Docker下制作RabbitMQ镜像的技术细节,包括以下内容:
程序员欣宸
2022/05/09
6280
Docker下RabbitMQ四部曲之二:细说RabbitMQ镜像制作
CentOs7.3 搭建 RabbitMQ 3.6 单机多实例服务
RabbitMQ简介 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 AMQP,即Advanced message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发
老七Linux
2018/05/31
2.6K0
基于docker的生信基础环境镜像构建
这里参考snakemake的写法,每个分析步骤创建一个yaml文件,里面是用到的软件及版本。首次运行检测该步骤环境存在,不存在先安装软件初始化。
SliverWorkspace
2022/08/11
1.4K0
基于docker的生信基础环境镜像构建
CentOs7.3 搭建 RabbitMQ 3.6 单机多实例服务
RabbitMQ简介 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 AMQP,即Advanced message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发
老七Linux
2018/05/31
1.7K0
centos7安装rabbitmq
RabbitMQ在全球范围内在小型初创公司和大型企业中进行了超过35,000次RabbitMQ生产部署,是最受欢迎的开源消息代理。
超蛋lhy
2018/12/17
8460
centos7安装rabbitmq
Bioconda软件安装神器:多版本并存、环境复制、环境导出
2017年生信宝典发布了Linux学习 - 又双叒叕一个软件安装方法,现在根据使用经验做一些更新,主要是增加了conda环境的复制、导入和导出功能。最开始是为了培训时,学员更方便搭建流程引入的,现在分享出来,方便更多人使用。
生信宝典
2019/08/23
2K0
CentOs7.3 搭建 RabbitMQ 3.6 单机服务
CentOs7.3 搭建 RabbitMQ 3.6 单机服务 RabbitMQ简介 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 AMQP,即Advanced message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面
程序员鹏磊
2018/02/09
1.2K0
CentOs7.3 搭建 RabbitMQ 3.6 单机服务
RabbitMQ 安装与界面管理
RabbitMQ拥有成千上万的用户,是最流行的开源消息代理之一。从T-Mobile到Runtastic, RabbitMQ在全球范围内广泛应用于小型初创企业和大型企业。
张小驰出没
2021/12/06
1.6K0
RabbitMQ 安装与界面管理
使用docker封装古董web.py+postgresql应用
title: 使用docker封装古董python web.py + postgresql应用 author: fanzhh category: - 技术笔记 tag: - docker - web.py - python - postgresql date: 2019-07-24 15:50
fanzhh
2019/08/20
1.6K0
使用docker封装古董web.py+postgresql应用
Nature Method:Bioconda解决生物软件安装的烦恼
其它之前很多人都用过Conda,特别是生信科学家近两年都在用Bioconda,那叫一个妙不可言、根本停不下来。这里我郑重通知大家,Bioconda于今年6月2号正式发表于Nature Methods(IF=26.9)。吃水不忘挖井人,用过的写文章记得引用它。
生信宝典
2019/10/14
1.6K0
Nature Method:Bioconda解决生物软件安装的烦恼
【机器学习】使用MLflow管理机器学习模型版本
在机器学习项目中工作通常需要大量的实验,例如尝试不同的模型、特征、不同的编码方法等。
黄博的机器学习圈子
2021/02/12
3.1K0
【机器学习】使用MLflow管理机器学习模型版本
还不会部署微服务项目?保姆级教程来啦!
项目上线是每位学编程同学必须掌握的基本技能。之前我已经给大家分享过很多种上线单体项目的方法了,今天再出一期微服务项目的部署教程,用一种最简单的方法,带大家轻松部署微服务项目。
程序员鱼皮
2023/09/27
2.6K1
还不会部署微服务项目?保姆级教程来啦!
Web基础配置篇(十): ActiveMQ与RabbitMQ的安装配置及使用
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)
品茗IT
2019/09/12
8100
dify:开源 LLMOps平台。
dify/README_CN.md at main · langgenius/dify · GitHub
黄规速
2024/05/24
8.4K0
dify:开源 LLMOps平台。
06. Linux 介绍与工具使用(五:使用conda 下载并管理你的软件)
和苹果的app store, 手机的软件管家一样,linux 也提供了conda(miniconda)这样一个软件中心。
北野茶缸子
2021/12/17
1.4K0
06. Linux 介绍与工具使用(五:使用conda 下载并管理你的软件)
Wayne - 360开源多租户K8S管理平台(介绍和安装)
Wayne是笔者无意之间刷文章了解到的,简单使用之后发现能解决当前眼下诸多问题,出于推动公司容器化进程的原因选择开始使用,当前所有环境都已经在使用中。借助官方的介绍Wayne 是一个通用的、基于 Web 的 Kubernetes 多集群管理平台。通过可视化 Kubernetes 对象模板编辑的方式,降低业务接入成本,拥有完整的权限管理系统,适应多租户场景,是一款适合企业级集群使用的发布平台。
喵了个咪233
2021/12/28
2.7K0
Wayne - 360开源多租户K8S管理平台(介绍和安装)
Anaconda虚环境管理
当接触的东西越多越需要进行分类管理,同样的python环境也需要进行分类管理。anaconda不仅在数据科学有较高的建树,在python环境管理上也同样出色。
HsuHeinrich
2025/02/06
820
Anaconda虚环境管理
推荐阅读
相关推荐
AiiDA 与 Quantum Espresso
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验