2023年12月21日木曜日

VMware Private AI with Intel : Openvino

 2023年は生成AIが盛り上がった年になりました。Deep Learningが注目されて第三次AIブームと言われていましたが、2022年秋に登場したChatGPTが爆発的にはやってDeep Learningの言葉を聞くことが少なくなって、AI業界は生成AI一色になりました。

Brocade(旧VMware)もこれまでAIへの取り組みはあまりないかと思っていましたが、Private AI with NVIDIAがVMware Explore Las Vegasで発表されてから、Balcelonaではwith Intel、with IBM WatsonxとPrivate AIのラインナップを増やしました。

どれも気になるところですが、特にオンプレのPrivate AI with NVIDIAとwith Intelは特に気になっています。with NVIDIAはGPUとNGCのソフトウェアを活用してトレーニングを行うことができ、DeppLearningVMやVectorDBなどVMware独自の特徴も盛り込んでいます。


もう一つ気になっているwith Intelです。with NVIDIAと同様にインフラ部分はVMware Cloud Foundation(VCF)をベースにしているのでインフラ管理は変わりはありませんが、ソフトウェアがIntel AI Softwareを利用しているところと、GPUはIntel Max GPU、一番の特徴はCPUの利用も想定しているところだと思います。

 VMware Explore JapanのDay2基調講演でIntel CPUで生成AIのインファレンスのデモを行っていましたが、思っていた以上にパフォーマンスがよくてGPUなしでも状況を選べば十分使えそうな印象をうけました。

GPUの供給問題もあり、今後はCPUの活用例も増えていくのではないかと思います。



画像:https://core.vmware.com/resource/ai-without-gpus-technical-brief-vmware-private-ai-intel#section3


with Intelでは当然Cudaの利用は想定しておらず、上のブロック図のIntel AI SoftwareはPytorchやPandasなど有名どころのOSSが載っていますが、Intelが提供するOpenvinoも当然利用できるようになっています。これまでOpenvinoを試したことはなかったのですが、自宅の環境で少し試してみました。


環境は自宅のDell Prcisionで動いているvSphere環境にUbuntuの仮想マシンでOpenvinoのサンプルベンチマークを動かしました。


・Dell Precision 3630

 -CPU: Intel core i7 xxxx

・ESXi 8 U1

・仮想OS: Ubuntu Server 22.04 ※minimal install



仮想OSをインストール後にopen-vm-toolsをインストールした状態から以下の手順で実行できました。



まずはpipのインストールです。


user01@ubuntu02:~$ sudo apt install -y python3-pip

[sudo] password for user01:

Reading package lists... 0%




Openvinoのインストール前にかならずpipのアップデートを実行してください。

pipのアップデートしないでOpenvinoのインストールを行うとエラーでインストールが止まってしまうようです。


user01@ubuntu02:~$ python3 -m pip install --upgrade pip




次にOpenvinoのインストールです。

user01@ubuntu02:~$ python3 -m pip install openvino==2022.3.0 openvino-dev[tensorflow2,pytorch,caffe,onnx,mxnet,kaldi]==2022.3.0



Successfully installed MarkupSafe-2.1.3 absl-py-2.0.0 addict-2.4.0 astunparse-1.6.3 cachetools-5.3.2 defusedxml-0.7.1 fastjsonschema-2.15.3 flatbuffers-1.12 gast-0.4.0 google-auth-2.25.2 google-auth-oauthlib-0.4.6 google-pasta-0.2.0 graphviz-0.8.4 grpcio-1.60.0 h5py-3.10.0 jstyleson-0.0.2 keras-2.9.0 keras-preprocessing-1.1.2 libclang-16.0.6 markdown-3.5.1 mxnet-1.9.1 networkx-2.8.8 numpy-1.23.4 nvidia-cublas-cu11-11.10.3.66 nvidia-cuda-nvrtc-cu11-11.7.99 nvidia-cuda-runtime-cu11-11.7.99 nvidia-cudnn-cu11-8.5.0.96 onnx-1.12.0 opencv-python-4.8.1.78 openvino-2022.3.0 openvino-dev-2022.3.0 openvino-telemetry-2023.2.1 opt-einsum-3.3.0 packaging-23.2 pandas-1.3.5 pillow-10.1.0 protobuf-3.19.6 pyasn1-0.5.1 pyasn1-modules-0.3.0 python-dateutil-2.8.2 requests-oauthlib-1.3.1 rsa-4.9 scipy-1.8.1 tensorboard-2.9.1 tensorboard-data-server-0.6.1 tensorboard-plugin-wit-1.8.1 tensorflow-2.9.3 tensorflow-estimator-2.9.0 tensorflow-io-gcs-filesystem-0.35.0 termcolor-2.4.0 texttable-1.7.0 torch-1.13.0 torchvision-0.14.0 tqdm-4.66.1 typing-extensions-4.9.0 werkzeug-3.0.1 wrapt-1.16.0 yacs-0.1.8

user01@ubuntu02:~$




次にomz_downloaderコマンドでベンチマーク用のモデルをダウンロードします。

Openvinoのインストールが失敗していると次のようにcommand not foundになってしまいます。


user01@ubuntu02:~$ omz_downloader --name resnet-50-tfomz_downloader --name resnet-50-tf

-bash: omz_downloader: command not found



omzはOpen Model Zooの頭文字をとっていて、GithubにIntelが学習済モデルを公開しています。

https://github.com/openvinotoolkit/open_model_zoo




Openvinoのインストールが成功している場合、途中で "N"を選択します。


user01@ubuntu02:~$ omz_downloader --name resnet-50-tfomz_downloader --name resnet-50-tf

Intel would like your permission to collect software performance and usage data for the purpose of improving Intel products and services. This data will be collected directly by Intel or through the use of Google Analytics. This data will be stored in countries where Intel or Google operate. Intel operates around the world and your usage data will be sent to Intel in the United States or other countries.

You can opt-out at any time in the future by running 'opt_in_out --opt_out'.

More Information is available at docs.openvino.ai.

Please type eYf to give your consent or eNf to decline.

>>N



99%, 99744 KB, 14582 KB/s, 6 seconds passed...

100%, 99775 KB, 14586 KB/s, 6 seconds passed




omz_converterコマンドでOpenvinoで利用するIR形式へ変換します。


user01@ubuntu02:~$ omz_converter --name resnet-50-tf --precisions FP16omz_converter --name resnet-50-tf --precisions FP16

========== Converting resnet-50-tf to IR (FP16)

Conversion command: /usr/bin/python3 -- /home/user01/.local/bin/mo --framework=tf --data_type=FP16 --output_dir=/home/user01/public/resnet-50-tf/FP16 --model_name=resnet-50-tf --input=map/TensorArrayStack/TensorArrayGatherV3 '--mean_values=[123.68,116.78,103.94]' --output=softmax_tensor --input_model=/home/user01/public/resnet-50-tf/resnet_v1-50.pb --reverse_input_channels '--layout=map/TensorArrayStack/TensorArrayGatherV3(NHWC)' '--input_shape=[1, 224, 224, 3]'



[ SUCCESS ] Generated IR version 11 model.

[ SUCCESS ] XML file: /home/user01/public/resnet-50-tf/FP16/resnet-50-tf.xml

[ SUCCESS ] BIN file: /home/user01/public/resnet-50-tf/FP16/resnet-50-tf.bin


user01@ubuntu02:~$




ベンチマークを実行します。 GPUを利用する場合は最後の "-d CPU"を "-d GPU”に変更すればGPUで実行することができます。


user01@ubuntu02:~$ benchmark_app -m public/resnet-50-tf/FP16/resnet-50-tf.xml -niter 100 -d CPUuser01@ubuntu02:~$ benchmark_app -m public/resnet-50-tf/FP16/resnet-50-tf.xml -niter 100 -d CPU

Traceback (most recent call last):

  File "/home/user01/.local/lib/python3.10/site-packages/openvino/tools/benchmark/utils/inputs_filling.py", line 20, in <module>

    import cv2

  File "/home/user01/.local/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module>


  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module

    return _bootstrap._gcd_import(name[level:], package, level)

ImportError: libGL.so.1: cannot open shared object file: No such file or directory


The above exception was the direct cause of the following exception:


Traceback (most recent call last):

  File "/home/user01/.local/bin/benchmark_app", line 5, in <module>

    from openvino.tools.benchmark.main import main

  File "/home/user01/.local/lib/python3.10/site-packages/openvino/tools/benchmark/main.py", line 15, in <module>

    from openvino.tools.benchmark.utils.inputs_filling import get_input_data

  File "/home/user01/.local/lib/python3.10/site-packages/openvino/tools/benchmark/utils/inputs_filling.py", line 22, in <module>

    raise Exception("Failed to import opencv module. " \

Exception: Failed to import opencv module. Please try to uninstall opencv-python and install opencv-python-headless instead.

user01@ubuntu02:~$



ここでエラー出ました。。。

libGL.so.1のImportエラーなので、libGL.so.1をベンチマーク実行前にインストールする必要があります。



user01@ubuntu02:~$ sudo apt-get install -y libgl1-mesa-dev

[sudo] password for user01:

Reading package lists... 0%



Running kernel seems to be up-to-date.


No services need to be restarted.


No containers need to be restarted.


No user sessions are running outdated binaries.


No VM guests are running outdated hypervisor (qemu) binaries on this host.

user01@ubuntu02:~$



再度ベンチマークを実行します。

user01@ubuntu02:~$ benchmark_app -m public/resnet-50-tf/FP16/resnet-50-tf.xml -niter 100 -d CPU

[Step 1/11] Parsing and validating input arguments

[ INFO ] Parsing input parameters

[Step 2/11] Loading OpenVINO Runtime

[ INFO ] OpenVINO:

[ INFO ] Build ................................. 2022.3.0-9052-9752fafe8eb-releases/2022/3

[ INFO ]



[Step 11/11] Dumping statistics report

[ INFO ] Count:            100 iterations

[ INFO ] Duration:         3600.59 ms

[ INFO ] Latency:

[ INFO ]    Median:        35.86 ms

[ INFO ]    Average:       35.95 ms

[ INFO ]    Min:           35.73 ms

[ INFO ]    Max:           37.20 ms

[ INFO ] Throughput:   27.77 FPS

user01@ubuntu02:~$



無事にベンチマークの結果がでました。 今回は動作確認を目的としているのでThroughputについてはふれませんが、Openvinoの実行のインストールは必要なパッケージがいくつかありますが特に難しい箇所はなく簡単にインストールまで行うことができました。 CPUで高速にAIの推論ができるのはコスト的にもとてもメリットがあるのでもう少しOpenvinoを勉強してみようと思います。



2023年11月21日火曜日

Bitfusion4.5.4

4月にBitfusionのEoAが発表されてから新規リリースもないと思っていたのですが、5月に4.5.4がリリースされていたみたいです。

ただ、4.5.4はCasandraで発生する不具合回避のためのアップデートだけでやはり機能追加はなしですね。

1つ前の4.5.3までは多くの機能追加とハードウェアサポートが追加されていますね。全然追っていませんでした、、、

リリースノートに記載されているアップデートは次のとおりです。

What is New in 4.5.3

  • vSphere Bitfusion is supported by VMware vSphere 8.0.

  • Expiration date of vSphere Bitfusion clients can be extended by using the vSphere Bitfusion user interface.

  • Added support for Red Hat Enterprise Linux 9.0 and later minor versions.

  • Added support for Rocky Linux 8.

  • Added support for Rocky Linux 9.

  • Added support for NVIDIA Driver 525.85.12.

  • Added support for NVIDIA CUDA 11.5 and 11.5.2.

  • Added framework support for Pytorch 1.9 and 1.10

  • Added hardware support for NVIDIA A40 48GB PCIE.

  • Added hardware support for NVIDIA L40 48GB PCIE.

  • Added hardware support for NVIDIA A30 24GB PCIE.

  • Added hardware support for NVIDIA A10 24GB PCIE.

  • Added hardware support for NVIDIA A2 16GB PCIE.


一応、vSphere8.0で動くのは確認していたのですが、サポートされているようなので、とりあえずはまだまだ使って行こうと思います。とても便利なので。

    2023年11月17日金曜日

    VMware Private AI foundation ③

    Tech zoneとかでPrivate AIの情報が出てきたので見ていると、ソフトウェアのサポートと組み合わせだけじゃなくて、各コンポーネントがちゃんと連携するみたいで、VMwareユーザーがAI始めるにはとても使いやすいだろうと感じてきました。

    kubeflowやRayは独立してて個別に利用するだけかと思ったらちゃんと連携してて、kubeflowのダッシュボードにRayのダッシュボードが組み込まれていているようです。
    また、kubeflowのダッシュボードでGPUのスケーリング設定もできたりようなので、Rayとも連携しているということなのだと思います。


    RayもVCFと連携していて、RayのワークロードがDRSやHAでワークロードのHAとリソースの最適な割当がされるようです。

    冒頭で書いたように、ただソフトウェアを組み合わせただけとだと思っていましたが、使い勝手がちゃんと考えられていて流石だなとおもいました。

    また使いやすさだけではなくてVector DBでデータの扱い、vSAN Fast Pathでシビアなパフォーマンスを求める使い方も考慮されていて、どのレベルのAIワークロードもカバーできるように組み上げられている印象です。

    類似した生成AIインフラソリューションはいくつかの会社から発表されていますが、各社NVIDIAのAI Enterpriseがほぼ利用されていてよく似ていて同じようなものに見えますが、よくみると各々特徴があって使いやすさや、管理性など違いが見えてきます。

    今後、もっと情報が公開されていくと思うのでチェックしていきたいと思います。

    2023年10月30日月曜日

    [Bitfusion]LLM fine tuning

    流行りのLLMを自宅のBitfusion環境で試し中。


    環境はjupyterにBitfusionでGPU割り当てて使ってますが、今のところ問題なく学習が進んでます!


    と思ったら、、、
    コンテナが固まった、、、

    コンテナ再起動して学習やり直し、、、

    2023年10月18日水曜日

    VMware Private AI Foundation ②

    Private AI Foundation発表当初、差別化されているのはRayとKubeflowかと思いましたが、それ以外にもVector DBやDeep Learning VMも特徴になりそうです。
    ※公開されている情報がまだ少ないので想定ですが、、、


    まずDeep Learning VMについて。
    DL / MLはOSSを活用することが多いのですが、登場するOSSが多くバージョンの整合性をとるのがとても大変です。そのため1つのOSSをバージョンアップすると他のOSSもバージョンアップする必要があったり、動かなくなったりとかなり苦労します。
    なのでPrivate AIに含まれるDeep Learning VMはDL / MLでよく利用されるOSSを整合性が取れるように事前にインストールされたVMになるだろうと想像します。
    もしかしたらBitnamiで公開されているovaファイルの仮想マシンになるのかもしれないですね。

    ただ、AIインフラもですがコンテナが主流になりつつあるなか、NVIDIAのNGCとの差別化はどうなるのかが興味があります。


    Vector DBはまだまだ勉強中なので次回以降にしたいとおもいます。



    2023年8月25日金曜日

    VMware Private AI Foundation

    VMware ExploreでPrivata AI Foundationが発表されました!
    数年前にAI関連のソリューションとしてBitfusionの買収とリリースがあってから、その後のAI関連といえばvsphere
    8でGPU関連のEnhanceがあったくらいでちょっとさみしかったですが、生成AIのブームにあわせて発表があった感じですね。

    実はMLperf3.0からVMwareが掲載されるようになったので今回のExploreで何かあるのかもと思ってましたがやっぱりという感じです。

    Private AI Foundationは今のところ中身を見るとVCFとNVIDIA NEMOなので真新しいという感じではないので、AI Enterpriseのライセンスがバンドルされるとかなんですかね、、、

    あとは、Rayが入っているのと、kubeflowに何か手が加えられていそうな感じですね。

    何にせよこれからが楽しみです。


    2023年7月15日土曜日

    vCenter8 + Bitfusion

     自宅のGTX1060がvSphere8で利用できなくなったので、泣く泣くvSphere7に戻しました。

    環境はvCenter8でvSphere8と7が混在しました。


    vCenter → VCSA8

    NUC → vSphere 8

    GPUサーバ → vSphere7


    GPUサーバをvSphere8にするつもりだったので、Bitfusionが収束にむかっているし、vSphere8だと未サポートなのでBitfusionは使わない予定だったのですが、方針変更で引き続きvSphere7でBitfusionを利用していくことにしました。

    ただ、vCenterが8なのでBitfusionのPlug-inがちゃんと動作するか心配でしたが、まったく問題なし!


    Bitfusionサーバ自体はvSphere7で動いているし、仮想アプライアンスなのでvCenterのPlug inが動いたので心配していなかったのですが、ちゃんとBitfusion clientからも利用できています。



    自宅ではまだまだBitfusion使っていきます。



    2023年7月14日金曜日

    vSphere8 + GTX1060

    自宅で利用していたvSphere7をvSphere8にアップデートしたら、ちょっと古いGPUのGTX1060が利用できなくなりました。。。

    vCenterでパススルーの設定はできるものの、仮想マシンに割り当てることができず、、、

    vSphere7に戻すと利用できるのでvSphere8だと無理なんだろうな。。。

    残念ですがGTX1060のGPUサーバだけはvSphere7で塩漬けでいきます。


    vSphere8で動くGPUを物色してみます。


    2023年6月10日土曜日

    ARIA Operations + Management Pack for Docker

     久しぶりにOperations Managerを触ってみましたが色々と確認できる内容が増えていますね。vROPSくらいの時から思っていたけど、ちょっと見るくらいには何となくわかるのですが、使いこなすには勉強が必要ですね。。。


    今回はOperations ManagerにPakを追加してみました。

    Pakを追加することによって、Operations Managerの管理機能や、ストレージやネットワーク機器、アプリケーションなどvSphere以外の製品を管理するための機能とダッシュボードを利用することができるようになります。

    10年近く前に某ストレージのPakをvCOPSに入れて試したことがありましたが、ストレージのコントローラやディスクなどをドリルダウンで確認したり、利用率の動的閾値や、将来予測などができた記憶があります。

    今回は自宅のDocker環境を試しに見てみようと思い、Aria Operations ManagerにDockerのPakを追加してみました。


    詳細はこちらのマニュアルを確認ください。


    こちらがvCenterのvROPSのメニューではなく、Operations Manager アプライアンスへログインした画面です。

    Pakの追加は上部メニューの管理を選択します。




    左のメニューからリポジトリを選択します。


    元々含まれているPakを利用する場合は右側画面から必要なpakの有効化リンクを選択しますが、個別にダウンロードしたpakを追加する場合は画面下部の追加/アップグレードリンクを選択します。



        インストールするPakを選択します。




    Pakのアップロードが完了したら次へを選択します。




    エンドユーザ使用許諾契約書に同意にチェックをいれ、次へを選択します。



    Pakのインストールが完了したら、完了を選択します。



    Operations Manager Applianceのトップ画面の上部の管理メニューを選択し、左側メニューでその他アカウントを選択しまし、右側画面でDockerを選択します。





    名前を入力し、DockerのHostのIPアドレス、ポート番号を入力し、接続の確認を行います。
    ログを取り忘れたのですが、ポート番号はたしか8080だったと思います、、、



    接続に成功した場合は、追加ボタンを選択します。


    設定が完了するとその他アカウントのリストに追加されます。



    ライセンスを追加するために、上部メニューの管理を選択し、左側メニューのライセンスを選択し、右側画面で追加を選択します。



    ライセンスを選択し保存を選択します。


    ここで問題が、、、
    3rd PartyのPakを利用する場合はOperationsのスタンダードでは動作しないため、Advance以上のライセンスが必要になるのと、True Visibilityのライセンスが必要になるので登録を行ったのですが、うまく情報がとれず、、、

    まだ調べ中なのでどのようがダッシュボードで情報が取れるかまだ確認できず、、、
    原因を調べたいと思います。





    2023年5月4日木曜日

    【ARIA】vROPS?  vAOPS?

    vRealize Operations ManagerがAriaブランドになって、略称ってvROPSから何になったんでしょう? vAOPSとか?? ゔいあおぷす? 言いにくい、、、

    ふと略称が気になったのをきっかけに久しぶりにOperations Managetを触ってみようと思い、自宅環境にデプロイしてみました。

    初めて触ったのはまだvSOMと言われていた頃で、vCOPSと名前が変わり、vROPSになった頃が最後だったきがします。

    今もvoaからDeployするか、vCenterからDeployするかは変わっていないようなので、今回はvCenterからDeployしてみます。



    vCenterの左メニュー一番下のvRealize Operationsを選択して、右ペインのINSTALLを選択します。


    ウィザードが立ち上がるので、Installation ModeではOnline installを選択します。


    vCenterの情報を入力します。



    Environment Detailsでは、VM Nameやデプロイ先のクラスタ、ホスト、データストアなどの仮想アプライアンス情報を入力します。



    vROPSの仮想アプライアンスのネットワーク設定値を入力します。


    ステップ2でvCenterの情報を入力しましたが、同じvCenterをモニタリングする場合は、Monitor the same vCenter Server in Step2のチェックボックスを選択し、Nextをクリックします。


    仮想サーバの展開を開始します。


    Operation Managerの準備が整うとvCenterで仮想環境の情報を確認することができますが、この後仮想アプライアンスの詳細設定を行います。
    仮想アプライアンスの設定を行うには、下記画像の赤枠のリンクを選択するか、Webブラウザで仮想アプライアンスのIPアドレスを指定します。


        
    ここからはvCenterの画面ではなく、直接Operations Manager アプライアンスでの設定になります。

    ブラウザで仮想アプライアンスへアクセスし、次へを選択します。



    EULAへ同意します。



    ライセンスがを入力または、評価キーのどちらかを選択します。


    カスタマーエクスペリエンス向上プログラムへの参加の設定を行います。


    完了ボタンを選択します。

    これでOperation Managerの設定が完了です。

    少し触ってみた感じだと、vSOMやvCOPSの時にメッセージアウトしていたツリー表示のドリルダウンする画面はなくなったんですかね。

    機能が増えた分使いこなすのには習得が必要な感じですね。

























    2023年4月7日金曜日

    EoA for Bitfusion

    そのうちなるだろうと思ってましたが、思ってたよりもずっと早くBitfudionのEoLが発表になりました。

    https://kb.vmware.com/s/article/91138

    とても面白くて使い勝手も良かったし、面白い技術だったのですが、、、

    せめてProject Radium出たあとならばと思ってましたがProject Radiumもまだリリースが決まってないみたいです。

    自宅のbitfusionは行けるとこまで使い続けます!

    2023年3月10日金曜日

    Openshift4.12 on vSphere8

     久しぶりにOpenshiftをvSphereにIPIで構築しました。

    バージョンはどちらも最新で、Openshiftは4.12でvSphereとvSANは8です。


    初めてvSphereにOpenshiftを構築したときはIPIに対応していなくてUPIのみで回りを作るのに苦労しましたが、IPI対応になってからとても簡単になりました。


    基本的な手順はドキュメント通りですが大まかにいうと、、、

    ・DNSへapiVIPとIngressVIPのAレコード追加

    ・DHCPサーバ構築(あれば不要)

    ・install-config.yamlの作成

    ・Clusterの作成


    これだけでvSphereにOpenshift環境が構築できちゃいます。

    ちょっとだけひっかかったところは、#openshift-install create install-configコマンドでinstall-config.yamlの作成中のパラメータ。apiVIPの設定でデフォルトの10.0.0.0/16以外のIPレンジを受け付けなかった。。。

    古いバージョンでは同様のバグがあって、改修されたと思っていたけど4.12でもまだ発生しました。

    まぁ、これもinstall-config.yaml作成後に、直接machineNetworkとapiVIP、ingressVIPを修正してしまえばいいので問題はありません。



    仮想上に作るのはオーバーヘッドがー、リソースがーということは理解していますが、Openshiftの動作確認や勉強などなどで利用するには十分ですね。





    vExpert 2023 Award

     発表から少し時間が経ってしまいましたが、今年も無事にvExpertを受賞することができました。


    仕事内容がHCIや仮想環境から少し離れてしまったのでなかなか活動できていないですが、

    今年はできることを少しずつ活動していきたいと思います。