Uberが開発、ノーコードでディープラーニングを実現するAutoML OSS「Ludwig」AutoML OSS入門(8)(1/3 ページ)

AutoML OSSを紹介する本連載第8回は「Ludwig」を紹介します。Ludwigは「データ型ベース(Datatype-based)」という思想を取り込むことでさまざまな課題に対する柔軟かつ容易な最適化を可能にしたAutoML OSSです。

» 2021年12月21日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

本記事で紹介したノートブックはGitHubにて公開しています。すぐに実行できますので、ぜひご利用ください。


 本連載第7回では、「Keras」をベースとし、ディープラーニングモデルを自動構築する「AutoKeras」を紹介しました。今回はノーコードでディープラーニングを実現するAutoML OSS「Ludwig」を紹介します。

Ludwigとは

 LudwigはUber Technologiesが中心となって開発しているAutoML機能を提供するOSS(オープンソースソフトウェア)です。LudwigはPiero Molino氏らによって2019年の論文「LUDWIG: A TYPE-BASED DECLARATIVE DEEP LEARNING TOOLBOX」で発表されました。

開発元 Uber Technologies
GitHub公開日 2019年2月
リポジトリ https://github.com/ludwig-ai/ludwig
実装言語 Python
ライセンス Apache-2.0 License
公式サイト https://ludwig-ai.github.io/ludwig-docs/
表1 Ludwigの基本情報

 Ludwigはディープラーニングに特化したAutoML OSSです。テーブルデータはもちろん、画像データや音声データも特別な知識がなくても扱うことができます。

主な特徴

 Ludwigは、AutoMLができる他のOSSと比較して次のような特徴があります。

  • データ型ベースによる汎用(はんよう)性
  • ノーコードでの利用が可能

 それぞれの特徴についてもう少し詳しく見ていきましょう。

データ型ベースによる汎用性

 データ型ベース(Datatype-based)は「入出力のデータ型さえ確定すれば、適切なディープラーニングモデルをある程度決めることができる」という考え方です。図1に示す通り、Ludwigの中では各データ型に対して適切なEncoderやDecoderが事前に用意されているため、利用するユーザーは入出力のデータ型だけ指定すれば、大部分の細かいパラメーターなどの設定を省略して問題を解くことができます。これによってLudwigは利用の容易性と汎用性を高度に両立させているといえます。

図1 Ludwigの処理イメージ 図1 Ludwigの処理イメージ(出典:Introducing Ludwig, a Code-Free Deep Learning Toolbox

 Ludwigが対応しているデータ型としては、自然言語や画像、音声など一通りのものがそろっています。世間によくある機械学習のさまざまなタスクは、これらを適切に組み合わせて選択することで表現できます。Ludwigで実現が可能なタスクと、指定可能な入出力データ型の組み合わせの例を以下に示します。

入力データ型 出力データ型 実現できるタスク
カテゴリー、数値、バイナリ バイナリ 二値分類
テキスト カテゴリー テキスト分類
画像 カテゴリー 画像分類
画像 テキスト 画像キャプション付与
音声 バイナリ 話者特定
カテゴリー、数値、バイナリ 数値 回帰
時系列 数値 将来予測
カテゴリー、数値、バイナリ バイナリ 不正検知
画像、テキスト テキスト 画像質問応答(VQA)
表2 Ludwigで実現できるタスクの一例

 Ludwigで解くことのできるタスク種別が広範にわたることが分かります。本記事の前半ではタイタニックデータを用いた二値分類の問題を、後半ではテキスト分類の問題をLudwigで解いてみます。

ノーコードでの利用が可能

 LudwigはPythonのコードを1行も書くことなく利用が可能です。用意する必要があるものはデータが含まれるファイルと、入出力のデータ型などの情報を記載したconfigファイルの2つのみです。Pythonがインストール済みであれば、以下のコマンドでLudwigをインストールできます。

!pip install ludwig

 インストール後は、コマンドラインから以下のように簡単に学習を実行できます。なお、path/to/file.csvはデータが含まれるファイルのパス、config.yamlはconfigファイルのパスに相当します。それぞれのファイルの具体例については、図2および図3を参照してください。

ludwig train --dataset path/to/file.csv --config_file config.yaml
図2 file.csvの例(タイタニックデータ) 図2 file.csvの例(タイタニックデータ)
図3 config.yamlの例(タイタニックデータ) 図3 config.yamlの例(タイタニックデータ)

 ただし、本記事はコマンドラインからの実行ではなく、PythonからLudwigを利用する前提で説明を進めていきます。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。