2013年12月

20

実際どうでしょう Vol.12「今更聞けない「進撃のHadoop」の基礎と豆知識」

普段の製品・ソリューション紹介だけでは聞き出せない情報を「実際のところはどうなんだろう?」という素人視点で、専門家に聞いてみるシリーズです。

題して「実際どうでしょう」。。。どうぞ、ご覧ください。

今回は、お二人の方に同時にインタビューさせていただきました。名コンビで実況中継と解説という雰囲気になり、とても沢山の話題を提供して頂きました。

<聞いてみて良かった(*´ω`*) メリひろ担当がエキスパートにインタビュー>

interview_hadoop_banner_fix

プロフィール:日本アイ・ビー・エム株式会社

堀越 啓二 様
・入社以来、研究部門に所属し製品担当になったのは去年の秋
・趣味は5歳から続けているテニス、毎週テニスの試合を楽しんでいる

都築 英夫 様
・身長183cm 、体重秘密。以前より片目の視力が極端に弱かったが、最近、両目とも人工レンズに交換し好調。3Dテレビが見られるようになって嬉しい。
・料理は趣味というより日常。冷蔵庫にある余り物の即興料理が得意。

※ 2013年12月時点でのプロフィールです。

—今日はよろしくお願いします。お二人は同期なのですね。(インタビューアー)

堀 越:そうです。ただ、一緒に仕事をするようになったのは昨年の秋からです。私が研究所からブランド/製品の担当になったのがきっかけです。

都 築:開発研究所ですが、今は研究員もお客様先に行き、接点を持つようにシフトしています。

堀 越:基礎研究の人達は研究に集中していますよね。

都 築:そうですね、とりわけ、特許をとるために研究している人達は別ですよね。日本IBMは実は、特許だけでビジネスになっている企業なのです。

堀 越:あれ、詳しいですね。

都 築:以前、特許ソリューションを担当しておりましてね、えーっと、そのソリューションというのは・・・

堀 越:今日はHadoopがテーマですよね。

—そ、そうなのです、そのソリューションも興味あるのですが、まずは現在も注目されているHadoopについてお聞かせ願いますでしょうか。

都 築:了解しました。基本的な事項は堀越さんにお任せするとして、私は脱線担当ということで(笑)

堀 越:では適時私が振りますのでよろしくお願いします。(笑)

 

今さら聞けない?Hadoopの誕生の背景

 

堀 越:Hadoopは大量のデータを複数に分散して処理できるオープンソースのソフトウェアです。
採用企業は年々増えており、ビッグデータ活用には必要不可欠な存在になっています。

データ量の増加にともなうサーバーの増加をする場合は、プロセス同士の通信の監視や障害時の対応など、共有データ部分の管理が煩雑になります。いわゆるスケールアウトの課題です。

エンジニアにとって、分散処理は効果があるけれど、対応が面倒な存在だったのですが、Googleが先頭にたって開発したのがHadoopというフレームワークです。

そして、ペタバイトベンダーのYahoo!やFacebookなどがそのテクノロジーに注目して採用し、共同で開発して生まれたのが、ApacheプロジェクトのHadoopという訳です。

—元々はGoogleの開発だったのですか、知らなかったです。

都 築:そうです。背景を知ると面白いですよ。そしてHadoopといえば、MapReduce(マップリデュース)とHDFS(エイチ・ディ・エフ・エス)ですねMapとReduceという用語はLISPなどの関数プログラミングから来ていてですね、関数型言語なのですが・・・

堀 越:都築さん、その話になると一般の読者はついていけないかも・・

— 堀越さん、ツッコミありがとうございます。実はすでにメモを取る手がフリーズしておりました。

都 築:あ、失礼しました。暴走したら止めて下さい。それでは何故Googleが開発したかという話にしますね。豆知識です。(笑)

Googleの命は検索エンジンですよね。大量のデータ、当時で数億ページだったWebをクローリングして、ひとつひとつの単語にインデックスを付けるわけです。

ユーザが検索した単語にURLを繋げるというマッピングの作業なのですが、爆発的に増え続けているインターネットのページに対してGoogleは新しいページを数日でインデックスする事ができるのです。これらの基盤をHadoopは支えています。

えー、それでは本筋に戻しましょう。堀越さん、お願いします。(笑)

弱点を克服していくベンダー

堀 越:はい。解説ありがとうございました。それではHadoopの基本的なテクノロジーについて続けます。

hadoop_feature

Hadoop前は複数のマシンをプロセス監視(通信、障害検知)するためには逐一考慮して、プログラムする必要があったため、分散処理は大変だったのです。

Hadoop後は、プログラマーはそれらを気にすることなく分散処理を実装できるのですごく助かります。

都 築:実は、IBMはもっと昔に並列処理としてSP2というマシンがありましたし、DB2にもパラレルエディションというのがあって、分散並列処理で高速化したという点ではHadoopと同じでした。

—世の中に出すのが早すぎたのですね。

 

都 築:そうですね、ネット普及前だったので、それほど大きなデータではなかったという事でしょうか。

堀 越:確かにIBM独自の路線もあったのですが、オープン性をみて、Hadoopを採用したのです。

—先行開発だとすると通常は自社開発にこだわってしまいそうですが、切り捨てる決断も凄いですね。

 

堀 越:次に、Hadoopの構成を説明しましょう。

冒頭に出たMapReduceは処理の分散管理で、HDFSはストレージの管理、複数のマシンをひとつのマシンとして管理できる基本機能です。

とにかく、エンジニアは継ぎ足す度に、設定をかえていたので大変でした。この2つの機能で並列処理の利便性が格段に向上したのです。

interview_sideshot

都 築:この分散ファイルシステムの弱点はシングルポイントフェイラー(システムの冗長化が行なわれていない単一障害ポイント)ですが、全体を管理している人(Mainノード)をIBMは2重化して問題を解決しています。

—プロマネを二人配置するみたいにですね?

 

都 築:そうです、その人が急にいなくなっても大丈夫なように、つまり企業で使えるようにというのを意識しているのです。

堀 越:HDFSの良い点はデータ処理時間の短縮化ですね。そして、データ管理が強みもポイントです。

—Hadoop=大量データ=大企業向けというイメージですが。それだけじゃないということでしょうか。

 

堀 越:そうです、処理時間の短縮という点は色々な企業に適応できます。

夜間バッチでデータの加工、集計処理をしていたのが、昼間、その日に処理が完了したデータを見られるようになるというのは、企業収益の改善と直結します。

データの管理についてですが、RDBでの管理は、データが増えて、DBの表を大きくしていくとスケールアウトの課題にあたるのですが、HadoopはHBase(エイチベース)という分散データベースの仕組みを使っているので、表の追加・修正をする必要がないのです。

— それはいい事だらけではないですか?

堀 越:しかし、万能ではないのです。データのKeyと値で表現する、シングルデータ管理は得意ですが、リレーショナルな複雑なデータ管理は得意ではないのです。ですよね、都築さん。

欲しいデータそこにあるのに、取り出せない「暗黒大陸」

 

都 築:そうですね。やはり、トランザクションではなく、バッチ処理に向いていると言えます。

例えば、支店の売上げデータを締めて、集約して各支店の店長にレポートを出すという業務があったとします。データの量が増えていくけど、朝が来る時間はかわらない。

長くなるバッチ処理に担当者はドキドキしているのです。1日で終わらないケースもありますので、そうなると分析をしている担当は、データ待ちの時間がネックになります。
こういったシーンはよくあります。

ある銀行の分析担当の人は、欲しいデータはそこにあるのに、取り出せないので、「暗黒大陸」と呼んでいました。システム運用の方は対応したくてもバッチ処理や他の業務優先で対応できなかったのです。

—暗黒大陸ですか。(笑)すぐにデータを見たいフロントと様々なタスクをもっているバックエンドの対立というかジレンマは確かにありがちな課題ですね。

都 築:大量のデータを高速で処理できるというのはすごくメリットがあるのは、みんな知っていましたが、昔はサマリーデータ、つまり、1ヶ月分のデータをまとめて・・という業務が多かったのです。

堀 越:現在のように1週間でビジネスが変わってしまう時代では、それでは間に合わないですよね。

都 築:実は日本では昔からビジネスにおけるデータ把握はタイムリーに出来ていたので「あ、奥さん今日はそろそろおでんじゃないですか?いい大根あるよ」という商売ができていました。

しかし、マーケットの拡大や全国展開の大企業になると、データ集約が間に合わないので、粒度が荒くなっていきました。セグメント化してバルク(まとめて)でやらざるを得なかったのです。

ちょうど【顧客から「個」客へ】というのがIBMのスマーターマーケティングのスローガンになっていますね。

—そのテーマでもお話を伺いたいのですが、時間に限りがあるので、ぐっと我慢して、次のトピックスへお願いします。

 

interview_2shot

 

技術者からみたら怖くて採用できなかった?

 

堀 越:では次にHadoopのオープンソースに対してベンダーが取り組んだことを話しますね。

HDFSでストレージ管理というのは新しく生まれた技術だったこともあり、本来ストレージとしてあるべき機能、例えばアーカイブ、スナップショットなどをサポートされていませんでした。

HDFS内のネームノードの高可用性がネックだったので、企業のインフラ管理者から見たら、対障害性という点で問題がありました。

都 築:もう、悪夢だよね。障害対応を考えると夜も眠れません。

堀 越:そう、技術者からみたら怖くて採用できないのです。(笑)

その対策を各ベンダーが出していきました。
HDFSの単一障害点の課題解決をはかったストレージベンダーなどです。

都 築:HadoopはSNSを駆使している企業にユーザが多いのですが、そのユーザはコンプライアンスをあまり気にされない場合があります。あ、言い方悪いですね。新しいサービスを立ち上げるスピード優先という意味です。

そもそもHadoopにはロックダウンする仕組みがなかった。
サービスの継続提供と共にセキュリティの強化というコンプラの順守を各ベンダーも考慮したのです。

堀 越:あとは、Hadoopは物理サーバー上のクラスターで処理しているのですが、Hadoop用の物理インフラを別途管理する必要があります。
サーバーの仮想化、統合化が進んでいるのに独立して物理サーバーを用意するのは面倒です。Hadoop用、BI用、ローカルストレージなど個別にサーバーを立てていくのは非効率なのです。

そこで、現在はApacheのクラスターをサーバー仮想上の上で動かすプロジェクトを進めています。
各ベンダーはインフラの観点でビッグデータの活用にどのようなアプローチをするのかがKeyになっていますからね。

都 築:Googleの仕組みって実は一般企業には足りないところが色々あるのです。あ、語弊がありますかね。
ただ、これは悪いことではなくて、Googleは自らのサービスで必要なところに特化しただけなのです。

この潔さが良いところなのです。ところがジェネラルパーパスとして一般企業でも安心して使えるようにするとGoogleが捨てたところをフォローするなどの配慮が必要です。

しかも、スピードを犠牲にしないで改善してきたMapReduce機能について、IBMはものすごく改良して、早さを生かしたファイルシステムにしています。

オープンソースは新しい技術をどんどん出すというところにフォーカスされていてそれが推進力になっているのですが、IBMは企業のお客様が必要なところも大事にしています。

hadoop_ibm

ビジネスで言えば、管理の大変さ、コンポーネントが増えれば、管理のポイントが増えるので運用コストが増えていく一方だったのです。あるお客様はサーバーを増やすという運用の困難さが採用の懸念点になるわけです。

堀 越:そこでアプライアンスというのがひとつの答えなのですね。

都 築:そうです、そうです。冷蔵庫を提供する感じです。配置して、電源を入れて、温度調整のつまみをガチャガチャっと回して、ハイ使えますという感じです。

堀 越:今の冷蔵庫はつまみではないでしょうけどね。(笑)

都 築:そうですね。(笑)
その他にも開発支援ツールを出したりと、Hadoop関連では、周辺製品がどんどん出てきて、名前も”Pig”だったりして、動物園みたいになっています。

堀 越:しかも放し飼いね。

—Hadoopのロゴは黄色い象ですよね。それにしても放し飼いですか(笑)

 

都 築:そうです、もうね、象の周りに沢山の動物が放し飼いで・・・そこでZooKeeperを出して、全体を管理できるようにしています。

—その飼育員ですが、それは洒落ではなくて、プログラム名ですか?

都 築:はい。ZookeeperはApache Hadoopのサブプロジェクトです。設定情報の集中管理のサービスを提供するソフトウェアですね。

そのようなツールが必要なくらい、実は、普通にHadoopを入れようとすると大変なのです。

相性とかバージョンが合わないといったのはオープンソースでは良くある課題です。先端を追いかける人はそれでもいいのかもしれないが、一般企業ではそれでは不安です。

今は新しいシステムを導入するときはスタンドアローンということはなくて、必ず他のシステム経由のデータ連携がありますからデータアダプタを使ったりと様々な設定が必要なのです。

— それら煩雑な設定をまとめてくれるKeeperがいるということですね。

堀 越:そして、その分、値段も上がっていくこともある・・・(笑)

表に出てこない採用コストを削減するために

都 築:そこですね、沢山の周辺ツールやオプションがあるのはユーザの利便性向上にとって好ましいですし、必要なオプションを選択していけばいいという考えがあります。

しかし、パーツにわけたりするとお客様の 、予算、稟議プロセスも大変複雑になるのです。 この事務プロセスはコストなのです。

IBMが取り扱う製品だと何万パーツになる訳ですが、これでは事務プロセスが増えるだけです。

パーツを分けるのは個人ではメリットかもしれないが、企業だとコストになることが多いです。

—その観点はあまり聞いたことないです。確かに日本企業の予算獲得や稟議プロセスを考えるとお客様の担当者は次フェーズも含めて、まとめて予算申請しておきたいという要求はよくありますよね。

 

都 築:そうです。初期コストというのは分かりやすいですし、目立ちますが、運用コスト、障害時の対応コストに加えて、導入する際の検討、採用コストも考慮すべきです。

—決してベンダー都合ではなく、お客様が選択、採用しやすい仕組みを設けるのもベンダーの役割ですね。

都 築:はい、あとベンダーの役割としては、こういった新しい技術を知ってもらうための活動に力を入れるというのも大事です。

近年は一方的なメッセージや囲い込みではなく、オープンコミュニティにお客様も参加してもらい、認知してもらっています。

オープンコミュニティはお客様とベンダーの窓口として大事です。あ、またHadoopから離れちゃいましたね。

いつ採用すればいいのか?

 

堀 越:それではスタジオに戻します。(笑)
なぜ、Hadoopなのか、いつ使うのか?という話をします。

都 築:「今でしょ!」 でいいですか? 年間大賞としても旬ですから、今のうちに使っておきましょう。

(一同 笑い)

interview_warai

堀 越:そうですね、今ですね。

何故ならば、過去において、企業は社内データの活用でよかったのですが、グローバルな競争に勝ち、ビジネスチャンス拡大にはマシンデータやSNSなどの外部データを積極的に取り込んでいくという綿密な情報戦略が必要です。その中ではHadoopは必然な存在です。

オープンソース+付加価値の製品が出てきているので、企業戦略として採用しやすくなっています。

こういったツールを活用してビッグデータへのベストとプラクティスを作るのが(MERITひろば運営会社の)NI+Cさんやシステムインテグレータ様 の力の見せ所なのです!

—あ、ありがとうございます。「最後のひとこと」のようですね。

 

都 築:締め括りに入らなければならないところをまた脱線します。(笑)

データ活用という意味では、データ・ソースというキーワードが大事です。

10月7日に開催されたIBM Think Forum Japan 2013で、ロメッティ(IBMのジニー・ロメッティCEO)がパナソニックの津賀一宏社長とパネルディスカッションをしていた時の話です。

パナソニックのカスタマーサポートでは一日に1万件の電話がくるらしいです。
これを分析すれば新しい製品のヒントがあるだろうと思って分析したら新しいアイデアは出てこなかったそうです。

そこで気がついたのは新製品開発には内部だけではなく、外部の人の声、つまり現在お客様では無い人の声を聞くのも大事だということです。

そこでSNSデータの有効活用に発展していくのです。
—なるほど。実際にやってみないと分からないことも多いですよね。脱線ついでですが、ビッグデータという意味ではマシンデータ、とりわけセンサーデータの活用について興味があります。 以前、データサイエンティストの中林さんにインタビューした時に、センサーデータの活用はこれから発展してく領域だと伺いました。

 

堀 越:国内大手重機メーカーは重機が地球の裏側で故障しても、アラートがあがって迅速にメンテパーツを送ることができるなどは有名な事例ですね。違うパーツを差すとエラーも出るすぐれものです。

都 築:確かに、アフターパーツの補完、管理はメーカーにとってコストなのです。

堀 越:さらに、故障前にアラートあげるという仕組みも進んでいます。

—SPSSも品質保全管理のソリューションとして出ていますね。あ、更に脱線しますね。

 

都 築:はい、MDA(Machine Data Analytics)は興味深いソリューションですよ。統計の世界ではオーバーフィッティングの問題があります。
データマイニングの世界では点をつなぐ重回帰の考えですが・・・(以下、ページの都合上省略。ご了承下さい。)

よし、SPSSの話は次の機会にしましょう(笑)

とにかく、現在、製造業においてアフターマーケットがアツいです。ここは日本企業が強いです。

—それでは、そろそろまとめをお願いします。

 

堀 越:Hadoopが必須技術なのは先ほど申し上げたとおりですが、それ以外にも技術の進歩は速いです。

使う側のユーザも進歩しなければ使いこなせないのですが、使う側が強い意思、意図をもっていなければならないと思います。我々はそれを支援するのです。

都 築:例えば我々(IBM)が、万年筆を製造する立場だとするとインク補填もいらないくらい、ずっとスラスラ書ける最高の万年筆を作ります。
周辺として専用の紙もあってインクもにじみません・・・という製品を売っていますが、「では直木賞はどうやってとるのですか?」とお客様に聞かれても我々は答えを持っていません。
そこはお客様の経営判断なのです。

—お二人ともありがとうございます。堀越さんにはきっちりと基礎を教えていただき、そこから都築さんが動物園から万年筆まで色々な例えをしてくださり、とてもためになって楽しいインタビューでした。

bi_starter_banner

その他の記事

2024年04月08日

【てくさぽBLOG】watsonx Assistant + Watson Discovery + watsonx.aiを連携してみた

こんにちは。てくさぽBLOGメンバーの高村です。 ビジネスへの生成AI の取り込みに注目が集まっている今日、watsonx.ai をどう活用すればいいのか、多くのお客様からお問い合わせ頂いています。そこで前回の「【てくさぽBLOG】IBM watsonx.aiを使ってみた(Part2)」では、watsonx.ai のユースケースとして Retrieval-Augmented Generation(以下 RAG)をご紹介しました。 今回は、RAG の仕組みを利用し AIチャットボットを提供する「watsonx Assistant(以下 Assistant)」と検索エンジン機能を提供する「Watson Discovery(以下 Discovery)」、「watsonx.ai」を組み合わせた連携ソリューションをご紹介します。 目次 AssistantとDiscoveryの連携 watsonx.aiを取り入れた連携 Assistant + Discovery + watsonx.aiを連携してみた さいごに お問い合わせ AssistantとDiscoveryの連携 本来なら各製品を一つのブログで詳しくご説明したいところですが、今回は連携した結果についてのご紹介となりますので、Assistant と Discovery については今後のブログであらためてご紹介したいと思います。 Assistant は watsonx の大規模言語モデルが搭載され、自然言語の問い合わせを理解し、適切な回答を返すことができるチャットボット機能を提供する製品です。一方 Discovery はドキュメントから適切な情報を検索する検索エンジン機能、パターンや傾向を読み取る分析エンジンとしての機能を備えた製品です。 Assistant と Discovery を組合わせたユースケースでは Assistant にあらかじめ回答を用意してルールベースで回答させ、答えることが難しい問い合わせに対しては Discovery の検索結果を利用して回答します。 watsonx.aiを取り入れた連携 上記の連携では Discovery の検索結果がユーザーに表示される仕組みとなっていますが、watsonx.ai を介して回答を提供することでDiscovery が得た検索結果をさらに整理し、より理解しやすい形での返答が実現できます。 Assistant + Discovery + watsonx.aiを連携してみた Assistant、Discovery、watsonx.ai を連携してみます。 事前準備 利用環境 今回は IBM Cloud で提供される SaaS を利用して検証します。なお、Assistant と Discovery の Plusプランは30日間無償期間が付属されていますので、是非ご活用ください。 watsonx Assistant:Plusプラン(30日間無償期間あり、以降は有償) Watson Discovery:Plusプラン(30日間無償期間あり、以降は有償) watsonx.ai:Essentialプラン(有償) 検証の目的 検証では構築手順の他、以下の点を確認します。 「Assistant + Discovery + watsonx.ai」と「Assistant + Discovery」の連携による回答の違いを比較 言語モデルを変えて問い合わせを行い、回答の違いの比較 実施手順 以下の流れで検証を実施します。 Assistantのプロビジョニング Discoveryのプロビジョニング、検索対象とするデータの取り込み※取り込むデータは「IBM Power S1014 データシート」のS1014のPDF watsonx.aiのプロビジョニング Assistantの初期設定 Assistantのカスタム拡張機能からDiscoveryを繋げる Assistantのカスタム拡張機能からwatsonx.aiを繋げる Assistantアクションの作成、問い合わせの検証 言語モデルを変えて問い合わせの検証 検証実施 1. Assistantのプロビジョニング はじめに Assistant のプロビジョニングを行います。 IBM Cloud にログインし、カタログ画面から "Assistant" を選択します。 ロケーションとプランを選択し「作成」をクリックします。 しばらくすると以下の画面の様に、Assistant がプロビジョニングされます。 2. Discoveryのプロビジョニング 次に Discovery をプロビジョニングします。 カタログ画面から "Discovery" を選択します。 ロケーションとプランを選択し「作成」をクリックします。 しばらくすると以下の画面の様に、Discovery がプロビジョニングされます。※ここで、資格情報内にある「API鍵」と「URL」をメモに控えます 「Watson Discoveryの起動」をクリックし「New Project +」をクリックします。 Project name に任意の名前を入力、Project type では「Conversational Serch」を選択し「Next」をクリックします。 作成されたプロジェクトをクリックします。 「Integration Deploy」をクリックします。 「API Information」タブをクリックし「Project ID」をメモに控えます。 次に検索対象の PDF を Discovery に取り込みます。 「Manage collections」から「New collection +」をクリックし、「Collection name」に任意の名前を入力、「Select language」を「Japanese」に設定します。 Upload files の領域に PDF をドラッグアンドドロップして「Finish」をクリックします。 アップロードが完了しました。次に、Smart Document Understanding機能(以下 SDU)を利用して PDF内のヘッダーやテキストなどのフィールドを定義します。 SDU は、PDFをはじめとする非構造化データの文書構造を理解して検索や分析の精度を向上させる機能です。例えばタイトルと定義した箇所を検索キーとしたり、検索対象をテキストと定義した箇所のみとするなど可能になります。 「Identify Field」タブをクリックします。 取り込んだ PDF が表示されるので右側の Field labels からヘッダー箇所やタイトル箇所などをドラッグアンドドロップして指定していきます。 ページの定義が終わったら「Submit page」をクリックして次の頁を定義していきます。 SDU では数ページ指定すると自動的にヘッダー箇所やテキスト箇所を認識してくれるので、何ページもあるドキュメントには便利な機能です。 今回は SDU を使って PDF の文書構造を定義しました。SDU以外の Discovery の機能については、また別の機会にご紹介したいと思います。 3. watsonx.aiのプロビジョニング ※watsonx.ai のプロビジョニング方法は「【てくさぽBLOG】IBM watsonx.aiを使ってみた(Part1)」をご参照ください。 4. Assistantの初期設定 Assistant の初期設定を行います。 Assistant を起動します。 起動後、以下の項目を入力します。 Assistant name:任意の名前を入力 Assistant Language:「English」を選択※日本語を選択することが可能ですが、Assistant のスターターキットは英語での利用を想定しているため今回はEinglishを選択します Assistant の公開先を「web」に設定します。※"Tell us about your self" 以降はご自身の情報を入力ください 入力後「Next」をクリックします。 デフォルトのチャットUI を利用するため「Next」をクリックします。 プレビュー画面が表示されるので「Create」をクリックします。(以下の画面は「Create」が隠れてしまっています) 「Congratulations!」と表示されたら初期設定は完了です。 5. Assistantのカスタム拡張機能からDiscoveryを繋げる 「Githubのassistant-toolkit」から "watson-discovery-query-openapi.jsonファイル" をダウンロードします。 Assistant のメニューから「Integration」をクリックします。 下にスクロールし「Build custom extension」をクリックします。 以下の画面が表示されるので「Next」をクリックします。 「Extension name」に任意の名前を入力し「Next」をクリックします。 先程ダウンロードした watson-discovery-query-openapi.jsonファイルをドラッグアンドドロップでアップロードします。 以下の画面が表示されるので「Finish」をクリックします。 追加した Extension の「Add +」をクリックします。 以下の画面が表示されるので「Next」をクリックします。 以下の画面が表示されるので、選択および入力します。 Authentication type:「Basic auth」を選択 Username:「apikey」と入力 Password:メモに控えたWatson DiscoveryのAPI鍵 discovery_url:メモに控えたWatson DiscoveryのURLから"http://"を除いた値 ※以下の画面ショットは discovery_url入力箇所が切れてしまっていますが、実際は「Servers」の下に discovery_url の項目があります 以下の画面が表示されるので「Finish」をクリックします。 Extension が「Open」となっていることを確認します。 これで watsonx Assistant と Watson Discovery が連携できました。 6. Assistantのカスタム拡張機能からwatsonx.aiを繋げる 次に、Assistant のカスタム拡張機能から watsonx.ai を利用できるように設定します。 設定には IBM Cloud の APIキーと watsonx.ai のプロジェクトID が必要です。取得方法は「【てくさぽBLOG】IBM watsonx.aiを使ってみた(Part2)」をご参照ください。なお、今回は東京リージョンで watsonx.ai をプロビジョニングします。 Github の「assistant-toolkit」から "watsonx-openapi.json" をダウンロードします。 Visual Studio Code などで東京リージョンの URL に編集し保存します。 Discovery の連携と同様に、Assistant のメニューから「Integration」「Build custom extension」をクリックします。 以下の画面が表示されるので、任意の Extension name を入力して「Next」をクリックします。 編集した watson-discovery-query-openapi.jsonファイルをドラッグアンドドロップでアップロードして「Next」をクリックします。 以下の画面が表示されるので「Finish」をクリックします。 追加した Extension の「Add +」をクリックします。 以下の画面が表示されるので、選択および入力します。 Authentication type:「Oauth 2.0」を選択 Grant type:「Custom apikey」を入力 apikey:取得済みのIBM CloudのAPIキー Client authentication:「Send as Body」を選択 Header prefix:Bearer(デフォルト) Servers:https://jp-tok.ml.cloud.ibm.com(自動入力) 以下の画面が表示されるので「Finish」をクリックします。 Extension が「Open」となっていることを確認します。 これで Assistant と watsonx.ai が連携できました。 7. Assistantアクションの作成、問い合わせの検証 Github の「assistant-toolkit」から "discovery-watsonx-actions.json" をダウンロードします。 Assistant の「Actions」から「Global Setting」をクリックします。 「Upload/Download」タブをクリックし、Uploadスペースに discovery-watsonx-actions.json をドラッグアンドドロップしてアップロードします。 以下の画面が表示されるので「Upload and replace」をクリックします。 以下の画面の通り、3つのアクションが作成されます。 メニューから「Variables」「Created by you」をクリックします。 「discovery_project_id」の値をメモに控えていた Discovery のプロジェクトID を入力し「Save」をクリックします。 「watsonx_project_id」の値をメモに控えて置いた watsonx.ai のプロジェクトID を入力し「Save」をクリックします。 「model_id」の値で watsonx.ai で使用する言語モデルを指定します。2024年2月29日に GA された日本語で訓練された Granite-japaneseモデルを使用するため、「ibm/granite-8b-japanese」を入力し「Save」をクリックします。(その他変数はデフォルト値とします) 「Actions」から「Generate Answer」を選択し、「model_input」の値を以下の例の様に日本語に変更します。 例: ("<s>[INST] <<SYS>>\nあなたは親切で、礼儀正しく、誠実なアシスタントです。常に安全を保ちながら、できるだけ役立つように答えてください。答えは簡潔に日本語で回答してください。回答には、有害、非倫理的、人種差別的、性差別的、有毒、危険、または違法なコンテンツを含めてはいけません。回答が社会的に偏見がなく、本質的に前向きであることを確認してください。\n\n質問が意味をなさない場合、または事実に一貫性がない場合は、正しくないことに答えるのではなく、その理由を説明してください。質問の答えがわからない場合は、誤った情報を共有しないでください。\n<</SYS>>\n\n質問に答えることで、次のエージェントの応答を生成します。タイトルが付いたいくつかの文書が提供されます。答えが異なる文書から得られた場合は、あらゆる可能性について言及し、文書のタイトルを使用してトピックまたは領域を区切ってください。与えられた文書に基づいて回答できない場合は、回答がない旨を記載してください。\n\n").concat(passages).concat("\n\n[question]: ").concat(query_text).concat("[/INST]") 以上で設定は完了です。 さっそく Assistant から問い合わせをしてみます。 右下の「Preview」をクリックします。 チャットから S1014 の特徴について問い合わせしてみます。約18秒後に以下の回答が返ってきました。 「Inspect」をクリックすると、Discovery の検索結果が以下の通り watsonx.ai に渡されていることがわかります。 <s>[INST] <<SYS>> あなたは親切で、礼儀正しく、誠実なアシスタントです。常に安全を保ちながら、できるだけ役立つように答えてください。答えは簡潔に日本語で回答してください。回答には、有害、非倫理的、人種差別的、性差別的、有毒、危険、または違法なコンテンツを含めてはいけません。回答が社会的に偏見がなく、本質的に前向きであることを確認してください。 質問が意味をなさない場合、または事実に一貫性がない場合は、正しくないことに答えるのではなく、その理由を説明してください。質問の答えがわからない場合は、誤った情報を共有しないでください。 <</SYS>> 質問に答えることで、次のエージェントの応答を生成します。タイトルが付いたいくつかの文書が提供されます。答えが異なる文書から得られた場合は、あらゆる可能性について言及し、文書のタイトルを使用してトピックまたは領域を区切ってください。与えられた文書に基づいて回答できない場合は、回答がない旨を記載してください。[title]: IBM Power S1014 柔軟かつセキュアなハイブリッドクラウド・インフ ラストラクチャーで俊敏性を実現[document]: 1 コ ア 当 た り 4 つ の M a t r i x Math Acceleratorによる迅速 なAI推論のために洞察と自動 化を合理化 業界標準のDIMMより2倍優 れたメモリーの信頼性と可用 性を提供 IBM® Power® S1014 は、1ソケット、4U Power10プロセッサーをベースにしたサー バーで、IBM AIX®、IBM iまたは Linux®上のビジネス・クリティカルなワークロード 向けに設計されています。Power S1014を使用することで、ワークロードはより 少数のサーバーに統合され、ソフトウェア・ライセンスの数、電力と冷却のコスト を削減します。Power S1014サーバーは、プロセッサー上でのメモリー暗号化を 使用してエンドツーエンドからデータを安全に保護し、ラック型またはタワーフォー ム・ファクターで購入できます。 プロセッサー・レベルでのメモリー暗号化と、POWER9 と比較してすべてのコア で4倍の暗号化エンジンによりコアからクラウドまでのデータを保護 ますます高度に分散した環境に存在するデータには、もはや境界線を設定すること は不可能です。 [question]: S1014の特徴は?[/INST] Assistant と Discovery のみの連携で検索した結果は以下の通りです。watsonx.ai を使用した方がより簡潔で分かりやすい回答を得られることが分かります。 8. 言語モデルを変えて問い合わせの検証 言語モデルを "llama-2-70b" にして同様の問い合わせをしたところ、約24秒後に回答が返ってきました。箇条書きで丁寧な印象です。 言語モデルを "elyza-japanese" にした際は10秒ほどで回答がありました。主語として「S1014の特徴は」とあることで、問いに対する回答が分かりやすくなっています。 言語モデルを変えて試した結果、llama-2-70B は箇条書きで回答し丁寧な印象を受けましたが、回答が得られるまでに24秒かかりました。一方 Granite-japanese や elyza-japanese はシンプルな回答を生成し、Granite-japanese は18秒、elyza-japanese は10秒というより短い時間で回答を得られました。 Watson Discovery の検索結果に基づき watsonx.ai で回答を生成するので、ある程度時間がかかると予想していましたが、elyza-japanese は速い回答で主語を添えてわかりやすく回答してくれました。 また、llama-2-70B は汎用的で使いやすいモデルですが、プロントで「日本語で回答して」と指示をしても問い合わせ内容によっては英語で回答することがありました。日本語の回答精度を求める場合は、Granite-japanese や elyza-japanese を使用した方が精度の高い回答を得ることができます。 モデルを変えて問い合わせてみると、モデルごとに得意なタスクが異なることがわかりました。数百億のパラメータで訓練された大規模言語モデルを一概に選択するのではなく、言語やタスクの特性に合わせて最適なモデルを選定することが重要になりそうですね。 さいごに いかがでしたでしょうか。Github から提供されているスターターキットを使って Assistant、Discovery、watsonx.ai を繋げてみましたが、ほどんど躓くことなく UI から簡単に設定することができました。 接続自体に高度な難しさは感じませんでしたが、問い合わせに対して正確な情報を得るためには Assistant の検索設定を調整する必要があります。今回は1つの PDFファイルの検索を行いましたが、複数の PDFファイルから情報を引き出す際には Assistant で query を設定することで特定の PDFファイルからの検索が可能です。 このように PDF などの非構造化データを検索対象として精度の高い回答を得るには、Discovery において文書の構造を明確に定義し、Assistant の検索設定を調整することが必要です。 実際にヘルプデスクなどの Webチャットで利用する場合は、Assistant にあらかじめ用意した回答をルールベースで回答させ、それでも解決できない問い合わせについては Discovery を通じて検索を行い、watsonx.ai を用いて回答を生成するという流れが効果的です。 ただし、生成AI によって生成される回答は常に”100%正確な回答”ではないので、より高い精度の回答を追求するためにはプロンプトの調整などチューニングを施すことが必要です。その結果、より使いやすい Webチャットの実現が期待できます。 お問い合わせ エヌアイシー・パートナーズ株式会社E-Mail:nicp_support@NIandC.co.jp   .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .bigger { font-size: larger; }

2024年01月16日

【イベント開催レポート】IBM watsonx.ai ハンズオンセミナー

こんにちは。ソリューション推進部です。 2023年12月12日に、エヌアイシー・パートナーズ株式会社として初めてのハンズオンセミナー『「IBM watsonx.ai 」を利用したRAGのハンズオンセミナー』を開催しました。 今回のハンズオンセミナーは、以下の2つのことを目的として行いました。 パートナー様に製品の紹介とハンズオンを合わせて体験いただくことで、製品をより深く知っていただくこと 製品を活用したビジネスの新たな応用の可能性を見つけ出していただくこと 私たちのチームでは、パートナー様にご紹介・ご説明する製品を「実際に触ってみること」を大切にしています。これは私たち自身の技術力の向上という目的もありますが、パートナー様に私たちのリアルな経験を交えながら製品のご説明をすることが、お客様の具体的な課題発掘や案件創出に繋がっていると考えているためです。 今回のハンズオンを通して、パートナー様ご自身が製品の価値を体感しご理解いただくことで、新しいビジネス展開のイメージを創出するお役に立ちたいと考えました。 それでは、今回実施したセミナーの内容について簡単にご紹介いたします。 目次 レポート watsonx.ai紹介講義 ハンズオン実施 IBMさまによる最新情報紹介・講義 さいごに お問い合わせ レポート 1. watsonx.ai紹介講義 ハンズオンを実施する前に、watsonx.ai と RAG についての講義を行いました。 国内では生成AIビジネスが加速し、競争力やセキュリティなどの課題が増えています。これらの課題を解決する製品として、IBM watsonx をご紹介しました。 watsonx は「watsonx.ai」「watsonx.governance」「watsonx.data」という3つの製品から成り立っています。watsonx.ai は、基盤モデルをベースとした AI開発スタジオです。 ここでは、IBM が信頼できるデータを用いて事前に学習した基盤モデルや Hugging Face, Inc.* と連携したオープンソースの基盤モデルが利用可能で、ビジネスの状況や要件に応じて最適な基盤モデルを選択することが可能です。 また、RAG についての概念や利点、活用が期待されるシーンもご説明しました。RAG を用いた具体的なユースケースとしては、IBM Watson Speech to Text や Watson Discovery、watsonx.ai を活用したコールセンター業務の事例や、watsonx Assistant や Watson Discovery、watsonx.ai を活用した ECサイトの問い合わせの事例を取り上げました。 時間の制約からこれら2つの事例しかご紹介できませんでしたが、今後、watsonx.ai を活用した多様な事例を私たち自身も理解し、パートナーさまと共に議論を深めていきたいと思います。 *Hugging Face, Inc.:機械学習 アプリケーションを作成するためのツールを開発しているアメリカの企業。 2. ハンズオン実施 ハンズオンでは、受講者の方々に「RAG」を活用した watsonx.ai の Foundation Model(LLM)への問い合わせを体験していただきました。 RAG とは「Retrieval-Augmented Generation」の略で、LLM への問い合わせをする際に、事前に用意したベクターストアへデータ(今回はPDF)を取り込んでおき、問い合わせプロンプトをもとにベクターストアを検索し、その結果を付与して LLM へ問い合わせを行う、というテクノロジーです。 RAG を使うことで、一般公開されていない社内情報を活用して LLM を利用することが可能となるため、自社での利用やお客様の課題を解決するための方法として有効であると考えています。 ハンズオンの環境につきましては、準備に時間をかけずスムーズに始められるよう、事前に弊社にて PC や RAG を利用するための Jupyter Notebook を用意いたしました。 また、watsonx.ai では複数の Foundation Model を利用できるため、複数のモデルを使って挙動の違いを確認してみたり、取り込む PDFファイルを追加することで回答がどう変わるのか、など、ご自身で自由に検証をする時間を多く設けました。皆さまそれぞれに前提スキルは異なっていたかもしれませんが、「体験の時間が足りない…」ということはなかったかと思います。 今回ベクターストアへ取り込むのは PDF のみとしましたが、テキストファイルや PowerPoint なども取り込むことができるので、応用できる使い方が非常に広いということを理解いただけたのではないかと感じています。 3. IBMさまによる最新情報紹介・講義 日本アイ・ビー・エム データ・AI・オートメーション事業部 四元さまに「watsonx」に関して、最新事例と製品アップデート情報の2本立てで講義をしていただきました。 事例においては、IBM社内の watsonx活用事例(AskIT)は特筆すべきと言えるでしょう。 AskIT は、IBMの自然言語処理(NLP)能力を活かし、30万件を超えるサポートチケットから抽出された知見をもとに、重要なサポートトピックに迅速に対処する AIアシスタントとして開発されたそうです。このツールは4ヶ月で133,000人の IBM社員に利用され、問い合わせの75%以上が AI によるチャットで解決されるなど、非常に大きな成果を上げています。 製品アップデート情報のメインは、12月に発表された「watsonx.governance」でした。 AI を組織として採用するためには倫理感のある意思決定が必須であり、watsonx.governance は AIガバナンスとして以下の3つの機能を提供する製品である、というご説明をいただきました。 AIライフサイクルを通してAIモデルの実態を把握するための「モデル・インベントリ」 AIの性能や課題の管理などを行う「評価・モニタリング」 総合監視画面を提供しリスクを可視化する「モデル・リスクガバナンス」 モデル・インベントリでは、他社の AI商品である「Amazon SageMaker」「Azure Machine Learning」などの AIモデルも合わせて管理・監視できることが非常に興味深いです。 watsonx は、AIワークフローを一貫してサポートすることで倫理的かつ透明性の高い AI利用を可能にしています。これらの技術革新は私たちが直面している数多くの課題に対する解決策を見出し、先進的なビジネス環境を促進していく上での重要なステップと言えるでしょう。 日本アイ・ビー・エム株式会社 データ・AI・オートメーション事業部 四元 さま さいごに セミナー後には、参加いただいたパートナーさまとご支援いただいた IBMさまとの懇親会を開催いたしました。 当懇親会を通してパートナー様の生成AI に対する取り組みや課題を直に伺うことができ、大変有意義な場となりました。 2023年12月18日に弊社は10周年を迎えました。10年間で培った経験を糧にし、今後さらに新しい取り組みにチャレンジしていきたいと考えております。 本年も、ブログを通してパートナーの皆さまへ様々な情報をお届けさせていただきます!今後ともどうぞよろしくお願いいたします。 懇親会会場 お問い合わせ エヌアイシー・パートナーズ株式会社E-Mail:nicp_support@NIandC.co.jp   .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .bigger { font-size: larger; }

back to top