本文面向机器学习从业者, 使用Sacred库来管理实验时进行可视化. Sacred教程
0. 摘要
本文提供两种方法来安装 MongoDB 和 Omniboard 库.
- 使用Docker (推荐, 但需要服务器上有 docker, 并且当前用户在 docker 用户组里.)
- 手动安装
mongod --dbpath /data/db --port 17000
PORT=9000 omniboard -m localhost:17000:ExpDBName
# 从浏览器访问 http://localhost:9000
1. 使用 Docker 安装
1.1 MongoDB
```bash拉取镜像
docker pull mongo:4.4.4
创建网络 (用于后续 Omniboard 的 docker 连接到该 docker)
docker network create sacred
开启容器
docker run -p 7000:27017 -v /path/to/db:/data/db —name sacred_mongo —network sacred -d mongo:4.4.4
<a name="CtzLv"></a>
## 1.2 Omniboard
```bash
# 拉取镜像
docker pull vivekratnavel/omniboard
# 开启容器
docker run -p 17001:9000 --name omniboard --network sacred -d vivekratnavel/omniboard -m sacred_mongo:27017:FSS
1.3 备注
如果因为某些原因服务器关闭, 或者docker重启, 那么不需要再次执行1.1和1.2的命令, 只需要启动容器即可(因为不加 —rm 参数时容器停止后不会删除, 可以再次启动.)
下载 lazydocker 工具来查看当前运行的 docker 容器, 执行停止, 启动, 删除等操作.
2. 手动安装
2.1 MongoDB
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
以上参考: https://www.runoob.com/mongodb/mongodb-intro.html
2.1.1 安装 MongoDB
地址: https://www.mongodb.com/download-center/community
选择合适的版本并下载, 解压, 并拷贝到自定义目录
# Download tgz file
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.2.5.tgz
# unzip tgz file
tar -zxvf mongodb-linux-x86_64-4.2.5.tgz
# move and rename
mv mongodb-linux-x86_64-4.2.5/ /home/<username>/tools/mongodb
把mongodb中的bin目录加入环境变量PATH
export PATH=/home/<username>/tools/mongodb/bin:$PATH
创建数据库目录, 可以自定义选择目录
# Root directory
mkdir -p /data/db
# User directory
mkdir -p ~/data/db
2.1.2 启动 MongoDB 服务
# Default parameters (root directory)
mongod
# Specify directory for data files, default to /data/db
mongod --dbpath ~/data/db
# Specify port number, default 27017
mongod --dbpath ~/data/db --port 17000
2.1.3 使用 MongoDB 服务
比如使用python中的sacred库, 可以为程序添加 MongoObserver
from sacred import Experiment
from sacred.observers import MongoObserver
ex = Experiment('ExpName')
observer_mongo = MongoObserver.create(url='localhost:17000', db_name='ExpDBName')
ex.observers.append(observer_mongo)
2.1.4 MongoDB 数据库管理工具
robot 3t / studio 3t
2.1.5 报错解决
# mongod: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory
# Solution
sudo apt-get install libcurl4-openssl-dev
# mongod: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by mongod)
# Solution
2.2 Omniboard 可视化 MongoDB 中的内容
Omniboard 是一个用于机器学习实验管理库 Sacred 的基于网页的控制面板工具. 它可以使用 Sacred 中提供的工具连接到 MongoDB 数据库, 用来帮助可视化不同的实验和指标. Omniboard 使用 React, Node.js, Express 和 Bootstrap 编写.
注: 从 v2.0 开始, Omniboard 只支持 MongoDB >=4.0
2.2.1 安装 Node.js v8 或更高版本
安装nvm (如果
install.sh
下载不下来的话, 就新建一个文件手动把代码复制过去, 再bash install.sh
运行)curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
source ~/.bashrc
安装Nodejs
nvm install node
2.2.2 安装 Omniboard
npm install -g omniboard
# 换源安装
npm install -g omniboard --registry=https://registry.npm.taobao.org
# 永久换源安装
npm config set registry https://registry.npm.taobao.org
npm install -g omniboard
2.2.3 开启 Omniboard
omniboard -m localhost:17000:ExpDBName
打开浏览器, 打开 http://localhost:9000 (Omnibaord 的 web 服务使用的端口会打印到终端, 具体是什么端口需要注意一下.)
使用指定的端口
export PORT=18000
omniboard -m localhost:17000:ExpDBName
打开浏览器, 打开 http://localhost:18000
启动第二个实例时端口会检测冲突, 并顺延
omniboard -m localhost:17001:ExpDBName2
打开浏览器, 打开 http://localhost:18001
3. MongoDB Command Line 的使用
参考: 菜鸟教程
连接到数据库
mongo <db_name>
mongo mongodb://<ip_address>/<db_name>
mongo mongodb://<ip_address>:<port>/<db_name>
查看集合
show collections
查询所有数据
db.<collection_name>.find().pretty()