メニュー

技術ブログ

Denso IT Lab.社員による技術情報の紹介

Denso IT Laboratory researcher's blog sites

数式

RSS

ページトップへ

Windows HPC Serverの最新動向

 

こちらは、HPC Advent Calendar 2013 の 16日のエントリです。

社内でWindows HPC Serverを活用しています。

机上実験等で、大量のデータを扱ったり、大量のトライアルを行ったりと、計算パワーを必要とすることは多いのですが、多くの場合は最新のPCのパワーで何とかなっていました。しかし、最近ではこれがビッグデータと言わんばかりのデータが持ち込まれることも多く、以前のように行かないケースも増えてきました。

弊社では社内でGPGPUの開発をする部隊がおり、その成果を研究に生かしたりもしています。GPGPUはNVidiaなどが推進するグラフィックボードを利用した効率的な並列演算を、画像描画以外のことに使おうというものですが、最近はかなり一般的になってきました。以下のような使いやすい行列演算ライブラリをリリースしています:

NTP : CPU/GPU切り替え可能な行列演算ライブラリ

このように扱いやすいHPC環境を利用できるのですが、扱える範囲は、行列演算で記述できるような処理に限られます。そうでない場合として以下のようなパターンがあります。

  • レガシーコード:そもそも改変ができない、難しいライブラリやアプリケーションを並列化したい
  • C++やMatlabへの移植が適切でない:他の言語で書かれていて、書き直すのが難しい
  • 条件分岐などが多発する処理:大規模並列化の難しい込み入った処理の場合

こういった場合でも、単に大量のデータを逐次処理したり、パラメータをSweepして感度分析を行ったり、というEmbarrassingly parallelな処理を並列化したい場合があります。そういった場合に適切なのがWindows HPC Serverのような環境だと思います。以下に導入~開発を示した文書を書きました。

Windows HPC Server のライセンスが無償に – Default Collection

単なる大量のバッチ処理を手早く終わらせたいという需要は色々なところにあるようで、財務集計処理や画像レンダリングなど特定業務の効率化に使われているという報告がMicrosoftから紹介されていました。

さて、そのようなものとしてはMapReduce環境を使うほうが普及しているかもしれません。ただMapReduceを利用しようとすると、例えば言語を選んだり(JavaとかPythonとか)コードの構成の変更が必要になったりと、手間が多いように感じます。データの効率的な分割を考えたりする必要がそれほど無ければ、HPC Serverは直感的で手間が最小限の手段と言えます。

しかし、Microsoftも巷に増えているHadoop技術者を取り込もうと、数年前からHPC Server/Azure上で稼働するHadoop環境を準備をしました。最近になり、HDInsightという便利なHadoop環境をAzure上に正式リリースし、さらにこのコミュニティに訴求しようとしています。

この辺の事情について、今回はプレゼンテーションを作りましたので、以下に公開しておきます。Hadoopもろくに知らない人間が書いていますので、間違いがあるかもしれませんが、あくまで業界サーベイ的にご覧になったらどうかと思います。


このエントリーをはてなブックマークに追加

NIPS2013聴講

NIPS2013に初めて参加しました。今年は1900人ほどが参加しているということです。思ったよりも参加者が多く、驚きました。この内、約300程の論文が採択され、その内の30くらいがオーラルで発表ができるという、やはり狭き門だなと実感しました。会場は、Lake Tahoeというカリフォルニア州とアリゾナ州との州境にあり、わずかにアリゾナ側にあります、それにちなんで会場のホテルがある地域は Stateline という名前が付いているようです。今年は特に気温が低く、最高気温がマイナス数度、最低気温がマイナス二十度前後くらいの日があり、ホテルから外に出る気になれず、非常に詰まらないと思いました。寒さはホテルの中にいれば良いのですが、個人的には空気の乾燥が辛く、喉が痛くなり、声も出なくなってしまいました。

しかし、300近い論文から、何を見たら良いか、自分の研究と直接繋がるものは良いとして、それ以外に何を見たら良いか迷うものです。このような時に、私はキーグラフを使って、論文の傾向を見て、何か面白そうなものはないかと調べるようにしています。キーグラフは、かなり試行錯誤をしないと傾向が見えないのですが、お手軽に使えるので重宝しています。特に、研究者グループの抽出とかには、とても便利です。今年のNIPSの論文をキーブラフ分析したものを以下に示します。


LDAで分析した人もいたので、参考にして下さい:

NIPSの論文は、以下から見ることができます(Reviewも見れて、凄いですね):

今年、個人的にもっとも印象的に思ったことは、ノイズの効用ということでしょうか。通常、ノイズは悪者であるはずですが、むしろノイズが良い影響をもたらすことがあるという事が時々ある訳です。それは、ヒューリスティックに利用されていたりしていたのですが、最近は、それを理論的に説明しようということがなされているようです。今回のNIPSでも、P. Baldiさんが Deep Neural Network における Dropout のモデルを作り、それが正則化の効果があることなどを説明していました。連想記憶モデルでも、ノイズにより性能が向上するという話が出ていたように思います。確率的勾配法なども、拡大解釈すれば、その範疇に入れることができるかもしれません。

チュートリアルでは、次の3つを聴いてみました。

  • Causes and Counterfactuals: Concepts, Principles and Tools
  • Deep Mathematical Properties of Submodularity with Applications to Machine Learning
  • Mechanisms Underlying Visual Object Recognition: Humans vs. Neurons vs. Machines
  • どれも分かり易く、良いチュートリアルだったと思います。今後、自分の研究に取り入れて行きたいですね。
    1つ目では、causal inference と conditional probability とはまったく違う(new paradigm であると)ということを強調し、しかし、最終的には causal inferenceを conditional probability を使って表現する関係式を導いて、これでちゃんと計算可能であるというような事を言っていたように思います。ちなみに、J. Pearl さんは、初めてどういう人か見たのですが、キャラクターが立った人で、意外でした。
    2つ目は、submodular関数の背後にある豊かな数学の世界についての解説で、特に、polymonoid の話に興味を感じました。
    3つ目のプレゼンは、内容と資料ともに非常に秀逸だったと思います。人の脳と機械とを比較し、計算からゲーム(Chessなど)、クイズ(Jeopardy)、パターンマッチングに至まで、機械が人の脳を上回ってしまった。しかし、人の脳の方が上回っていることが、物体認識、シーン理解、歩行であるということであった。この発表では、人の脳がどのように物体認識を行っているのかを解明しようという話でした。ここで、最近話題の deep neural network のように多層の構造がどうして必要かという話があり、それは物体の様々な見え方の違いに対応できるようにするための必然であるということを説明されて、それももっともな話だと思いました。人の脳は「マッピング」(の組み合わせ)によって、物事を処理しているんだと印象に残りました。

    メインの会議は、午前、午後とオーラル・セッションがあり、参加者一同が介して、発表を聴くのですが、私はすぐに話に落ちこぼれてしまい、あまり楽しむことができませんでした。体調が悪く、集中できなかったのもあると思いたいのですが。しかし、いくつか面白いと思えた話を上げると、(あれ、2つしかない!?)

  • P. Baldiさんの Dropout のモデル
  • Daphne KollerさんのCourseraの話
  • Baldiさんの話は、すでに説明しました。Koller さんの話は、冒頭にまず、最初、Ben Taskar 氏の死を悼む話があり、会場全体で黙祷をした後、自らが co-founder, co-CEO を勤める Coursera の紹介でした。これは、世界のトップクラスの大学の教育をオンラインで無償で受けることができるオンライン教育システムの話で、発展途上国などで貧困に苦しむ家庭の子供達に、そこから抜け出せる機会を作っているもので、すでに数百万人に受講生がいるという。これだでの多くの学生の授業をフォローしたり、スコアを付ける作業は大変であり、そこに機械学習のような技術が不可欠になってくる訳です。このコースを履修して、試験をパスすると、ちゃんと卒業証書を発行してくれるそうで、その代金20ドルが主な収入源になっているようでした。話を聴いている時から、ちょっと胸を打たれていましたが、トークが終わった後、まるで、音楽の演奏会でアンコールをまつような感じで、暫く人々の拍手が止まなかったのが印象的でした。セッションの中休みには、若者達が、スピーカーの Koller さんを取り囲み、熱心に話をしていて、なんて素晴らしい光景だろうと思いました。(下の写真の中心あたり。ちょっと分かり難いですが。)

    DSC03378_50

    ワークショップは、次の2つを聴くことにしました:

  • Planning with Information Constraints for Control, Reinforcement Learning, Computational Neuroscience, Robotics and Games
  • Workshop on Spectral Learning
  • ワークショップの方が、テーマが絞れていて、人数も少なくなるので、議論もし易く、楽しいですね。個人的には、これくらいの規模でないと楽しめないということが、今回、良く分かりました。
    1つ目のワークショップでは、ややマイナーなテーマかもしれませんが、最適制御と量子力学や熱力学などとの間に密接な類似関係があることが知られていて、その関係を積極的にロボット制御などに利用して行こうという話で、自分が物理出身であるということもあり、非常に魅力を感じたテーマでした。しかし、物理出身者からすると、類似の利用の仕方に、若干、違和感も感じないでもなかったので、この違和感を解消することを、まず第一の目標にしようと思いました。
    Spectral Learning は、ここ数年、とても流行っているという印象がありますが、着実にメインの方法として定着していっているように思えます。特に、テンソル量への拡張に興味を感じます。

    NIPSは、あまりに規模が大きく、一人ではごく一部を把握するのがやっとだと体感しました。しかし、得るものも多い会議だとも思うので、来年も参加できると良いと思いますが、一人ではなく、何人かで参加できると良いと思いました。会場もこんな山奥ではなく、カナダのモントリオールに変わるということなので、会議以外も楽しむことができるでしょう。(噂では、この会場は4年ほど使う予定だったそうですが、2年目の今年で終了になったようです。会場を変えたのは、山奥で行き難いとかいう理由かと思っていたら、それよりも会場的に、どうしてもカジノの中を移動しないといけないのが不評であったからということのようです。)

    [おまけ] メインの会場があるホテル。雪が降り、道路に雪が残っています。
    DSC03388_40

    このエントリーをはてなブックマークに追加

    【TFS】 Team Foundation Server に巨大ファイルをチェックインしてしまったときの対処

     

    Team Foundation Serverを活用しています。Visual Studioから使うには便利ですね。TIPSなどを備忘録的に書いていきたいと思います。

    ある日TFSに4GB以上もあるフォルダをチェックインされているのを発見しました。このリポジトリはそれほど更新するわけでもないので、それ自体は問題無いとは思うのですが、いざプロジェクト全体をチェックアウトしようとすると、チェックアウトが終わらず、作業ができないという現象に陥っていました。

    そのリポジトリは現在はあまり活用していなかったのですが、年末大掃除の一環でクリーンアップしたのでその手順を備忘録的に書いておきます。

    手順としては、まずその巨大ファイルを削除をしたあとに履歴を辿ってデストロイをするというだけです。

    ロックの解除

    ご丁寧にその巨大ファイルはロックがかかっており、その人のアカウントはもうなくなっているという状況でした。チェックアウトしたままの状態だったようで、自分のアカウントから削除を行うことができません。ネットで少し探すと、以下のような記事を見かけて、これを行うことにしました。

    TFS: 別PCでのチェックアウトを取り消す – .NET 航海日誌

    これで当該ユーザのかけたロックをすべて解除できます。

    tf undo /recursive /workspace:別PCで割り当てていたワークスペース名;ドメイン名ユーザー名 $/

    私の環境で少し異なったのは、複数のリポジトリがあるため

    /collection:http://hogehoge:8080/project

    というオプションを付けたくらいです。

     

    また、上記のTAKENAKAさんの記事にあるとおり、その人が別PCで割り当てていたワークスペースは

    tf workspaces /owner:ドメイン名ユーザー名 /computer:*

    という呪文で一覧できるので、それでワークスペース名を引いてくる必要があるようです。

    フォルダの削除

    リポジトリの中をのぞくと、その巨大ファイルの中身はSQL serverのデータベースファイルであることがわかりました。一方、Team Foundation Serverは、SQL serverでリポジトリ管理をするので、SQL serverのデータベースファイルの中にデータベースファイルがシリアライズされているという状況です。これはあまり気持ちよくありません。

    destroyコマンドを使って、過去の履歴とともにすべて当該ファイルを削除したいと思いますが、MSDN には以下のようにあります。

    /keephistory オプションを指定しないで tf destroy を実行する場合は、その前に、破棄するファイルを先に削除することをお勧めします。

    ですので、削除を行います。ロックを解除しているので、ソリューションエクスプローラから簡単に削除できます。これもMSDN参照。

    デストロイ

    名前からして恐ろしいのですが、チェックアウトできないソース管理システムなんてゴミ同然なので、復旧作業としてやらねければなりません。

    先ほどのMSDNの説明通り以下を行います。

    tf destroy /collection:http://hogehoge:8080/project $/project/…フォルダ名

    これ自体は単純なので間違えようが無いですが、フォルダ名を入れる際は間違えて上の階層を指定したりしないように、注意しましょう。

    デストロイが完了したら、無事チェックアウトができました。これでバックアップやTFSのバージョンアップなどが簡単に行えるようになりました。ホッ。

    このエントリーをはてなブックマークに追加