日々刻々と進化する技術環境の中で、お客様に最適な技術を提供
当社では設計サービスの研究開発を行なっています
研究開発の柱は、「人工知能の設計」「新規技術の開拓」「設計の効率化」「社員教育」の4つです。
このサイトでは、公開可能な範囲内で、研究開発の一端をテーマ別にご紹介します。

1人工知能の設計 ~ディープラーニング~


最近の市場のニーズに対応するため、「人工知能の設計サービス」を開発しています。人工知能の技術の中で、やや複雑な画像認識を実現するためには「ディープラーニング(深層学習)」が欠かせない存在になりつつあり、当社でもディープラーニングに注力しています。ディープラーニングをビジネスに活用しようとした場合、いくつかの現実的なハードルにぶつかります。例えば、「適切なニューラルネットワークの設計」「適切な機械学習フローの設計」「機械学習用のマシン環境の構築」「正解情報の大量の付加作業」です。当社では、それらの要素を全てカバーして、一貫したディープラーニング・サービスを提供します。

ニューラルネットワークと機械学習フローの設計事例を紹介します。下記の2つの図は、一般道路の中央線を検出するニューラルネットワークをディープラーニングにて作成した事例です。左図が、設計したニューラルネットワークの構成図です。一般的に画像認識に有利とされているCNN(Convolutional Neural Network)の形をとり、3層のConvolution層と2層の全結合層で構成しています。通常のCNNでは、プーリング層というレイヤーを途中に挟みますが、ここでは位置情報を出来るだけ保持させることを優先してプーリング層は入れない、という設計方針をとりました。右図が、実際の道路画像をニューラルネットワークに通し、道路の中央線を検出した結果です。


この事例では、Preferred Networks社(PFN社)からオープンソースとして公開されているChainerというディープラーニング用のプラットフォームを使って、機械学習を行なっています。機械学習の大規模演算には、AmazonのクラウドサービスであるAWS上のGPUマシンを利用しています。AWS上のマシンとの通信は、セキュリティレベルが高いVPN接続を通して行なっているため、自社内にマシンを置いている場合と同じような環境で設計を進めることができます。当社ではITサービス事業も行なっており、こういった環境構築も得意としています。また、設計の内容によっては、クラウドサービスを利用するのではなく、物理的なマシンを購入して自社内に設置します。当社では主に半導体設計のために数十台のワークステーションを常時稼動させているという実績を持っており、自前で購入したハードウェアを使った環境構築も可能です。機械学習用のマシン環境を柔軟かつ迅速に構築できることが、強みです。

はじめに挙げた4つの現実的なハードルの中で特に困難なのは、正解情報の大量の付加作業です。ディープラーニングは、機械学習の中で「教師あり学習」というカテゴリに分類され、学習のための教師データを必要とします。例えば、ディープラーニングを使って、工場内で撮影した画像の中からダンボールの位置を特定する画像認識プログラムを作成したいとします。その場合、ダンボールが写った大量の画像を用意し、その画像に対してダンボールの位置に印を付けるという作業を人手で行います。この時、画像に付加された印が正解情報です。そして、画像と正解情報をセットにしたものが「教師データ」となります。なお、この正解情報は「Ground Truth」とも呼ばれます。

一般的に、実用に耐えうる精度を確保するためには、正解情報が付加された画像データが最低でも十万個必要と言われています。用途によっては、さらに数桁上の個数のデータが必要となります。尋常な数ではありませんが、残念ながらこれを手作業で作成しないといけません。この人的リソースを確保することが、ディープラーニングの実現のための大きなハードルとなります。そこで当社では、ベトナムに設立した「三栄ベトナム」(SANEI HYTECHS VIETNAM co., ltd.)にて正解情報の作成チームを結成しました。すでに、大手企業様からの大量のご依頼に対応した実績を持っています。

2人工知能の実装 ~エッジコンピューティング~


人工知能の設計に加え、「人工知能の実装サービス」の開発も進めています。一般的に、人工知能のアルゴリズムの設計は演算能力の高いマシンを使って進めていきます。そして、人工知能の設計者は、高性能マシンの上で動くソフトウェアを作るところまでの役割を担います。一方で、人工知能は、最終的にはロボットや車などの移動装置に搭載されることが期待されています。高性能マシンを移動装置にそのまま載せられればよいのですが、マシンの重さやサイズによって装置の移動能力を著しく損なってしまいますので現実的ではありません。それに対し、無線通信によって外部の高性能マシンと接続するという発想もあります。しかしこの方法ですと、通信による遅延時間がボトルネックになってシステム全体の処理速度を低下させ、せっかく作った賢い人工知能アルゴリズムを実用に全く耐えられない程度のスピードでしか実行できなかったりします。

そこで求められるのが、人工知能のアルゴリズムの一部あるいは全体を「マイコン」や「FPGA」で実現することです。マイコン・FPGAと高性能マシンを通信によって接続して、リアルタイム性が必要になる部分をマイコン・FPGAで処理し、遅延が許される部分を高性能マシンで処理します。このような、高性能マシンで行なっていた処理をネットワークシステム全体の先端(エッジ)に位置するマイコンやFPGAにて処理する、という「エッジコンピューティング」の発想が広がりつつあり、当社でもその実装技術を磨いています。エッジのデバイスへ人工知能のアルゴリズムを実装するためには、アルゴリズムをマイコンやFPGAに搭載可能な形に軽量化し、処理の内容をソフトウェアとデジタル回路に適切に分割する技術が必要になります。もちろん、デバイスを使いこなすことも基盤技術として求められます。


当社では、前項の「人工知能の設計 ~ディープラーニング~」の中で示したようなニューラルネットワークをXilinx社のZynq®へ搭載するといった実績を積みながら、実装技術の獲得を進めています。(Zynqを使ったシステムの開発については、別項の「デジタル・ソフトの協調設計 ~Zynq・Altera SoC~」をご参照ください。)ニューラルネットワークをZynqなどのターゲットデバイスへ搭載可能な形に軽量化するために、まずは高性能マシンと同じ精度で演算した場合に消費するリソースを見積ります。例えば、ニューラルネットワーク内の各係数を保持するのに必要なメモリ量(レジスタの大きさ)、主要な演算部をFPGAで実現する場合に必要なデジタル回路の規模(DFFやルックアップテーブルの量)などです。また並行して、いくつかの仮定を置いた上で、処理時間(レイテンシとスループット)を計算しておきます。CNN形式のニューラルネットワークにはデジタル回路で並列可能な積和演算が大量に存在しますので、処理時間は並列数(つまりデジタル回路の規模)とのトレードオフの関係になります。

そして、見積った数値を元に、ターゲットデバイスへ搭載するためにはリソースをどのくらい減らすべきかを検討します。特に、演算のビット幅をいくつにするかがポイントです。デジタル回路で並列化する場合、基本的には浮動小数点ではなく固定小数点にて演算を行いますので、まずはニューラルネットワークの演算を固定小数点化します。そして、固定小数点化した際に生じる、ニューラルネットワークの出力結果の誤差を確認します。例えば、道路画像から中央線を検出するニューラルネットワークの場合には、道路画像を固定小数点化したニューラルネットワークへ入力して中央線の位置情報を出力させます。この値と、高性能マシンで行なった浮動小数点の演算結果の差が、誤差に相当します。この誤差とビット幅から決まるリソース量のトレードオフ関係から、最終的にビット幅を決定します。しかしながら、仕様の精度を満たすビット幅を実現するには、ターゲットデバイスに入りきらないほどのリソース量が必要になることもあります。その場合には、人工知能の設計のフェーズまで戻り、ニューラルネットワークの構成を見直してディープラーニングを再実施することになります。

リソース量と処理時間に目処が立ったら、具体的な実装に入ります。Xilinx社のSDSoC®のような高位合成ツールを使って、デジタル回路を生成します。生成されたデジタル回路のサイズやレイテンシが想定より大きくなり過ぎた場合には、人手でRTLを設計します。

以上のように、具体的な実装フローは一般的なシステムの場合とほとんど変わりませんが、トレードオフ関係を理解して適切な判断を下すためには、実装の担当者が人工知能を理解していることが求められます。また、目標の性能が得られないことが分かった場合に、人工知能の設計のフェーズまで戻るかどうかの判断も、実装の担当者に委ねられる部分が大きくなります。

3設計効率の追求 ~高度な自動化~


特にアナログ回路設計にクローズアップし、設計効率を追求しています。PVT(プロセス・電源電圧・温度)の条件振りシミュレーションや、従来は目視チェックをしていた回路図エラーの有無の確認などの一般的なルーチンワークの自動化に加え、より高度な自動化にも挑戦しています。部分的ではありますが、比較的高度な数理処理によって人間の思考を模擬した判断機能を加えていることから、当社ではこの高度な自動化のことを「簡易人工知能」と呼んでいます。(Google社やIBM社が開発しているような本格的な人工知能ではなく、あくまで「簡易」です。)

例えば、回路図のトポロジー(形)をグラフ理論に基づいた探索アルゴリズムで自動分析し、回路図中のトランジスタ(MOSFET)を「デジタル素子」と「アナログ素子」に分類するプログラムや、回路の種類(オペアンプなど)を判断するプログラムを開発しています。人間と同じように「パターン」を認識することで、単純な文字列・数字の比較では実現が難しい「高度な判断」ができるようになります。得られた情報は、別途開発を進めている自動検証や自動設計のプログラムにて活用します。自動化技術によって、人間の技術者は、より難しく、より面白い設計に集中できるようになります。

また、こうしたプログラムでは、主にグラフデータに対する「探索アルゴリズム」の処理で膨大な時間がかかってしまうことがあります。そういった処理のうち独立性の高い演算要素に対しては、OpenMPなどの並列コンピューティング用のAPI(アプリケーション・プログラム・インターフェース)を活用して並列化し、処理時間を大幅に短縮します。その他、一般的に難しいと言われているアナログレイアウト設計の自動化にも挑戦しており、その中の図形演算の処理でもOpenMPによる並列化を実現しています。このような並列化に関するソフトウェア技術や、並列処理を行うためのワークステーション(サーバー)に関するIT技術を、社内のソフトウェア部門とITサービス部門から柔軟に調達し、設計の自動化を加速させています。

4アナログ性能の追求 ~ボトム・トップ双方から~


ボトムアップとトップダウンの双方の視点からアナログ回路の性能を追求できるようにするための、設計環境の構築を進めています。ボトムアップの視点では、例えばCMOSのトランジスタ素子や抵抗素子などのデバイスの性質を把握するための分析プラットフォームを開発しています。

回路の構成(回路図の形)が決まっていても、CMOS 0.25um, 0.18um, 90nm, 40nmといった使用する半導体プロセス(とファブ)の種類によって半導体素子の性質が大きく変わり、それにともなって設計方針を大きく変更しないといけないことがよくあります。いちいち回路全体でシミュレーションを実行して回路の特性を確認していては時間がかかりますし、回路図の中のどの素子が原因で所定の仕様を満たせないのか簡単に特定することができません。そこで当社では、具体的な回路設計に入る前に、トランジスタ素子・抵抗素子・容量素子を単体で様々な条件下でシミュレーションして各素子の性質のデータベースを作り、それに基づいて定量的な設計方針を立てています。素子の性質に沿った設計をすることで、それぞれの素子が回路図全体に及ぼす影響が予測可能となり、アナログ回路の性能を追求しやすくなります。自社開発の分析プラットフォームを使うことで、素子の性質のデータベースを効率的に作ることができ、かつ、性質を視覚的に確認することができます。

トップダウンの視点では、例えばMatlab®/Simulink®などのシステム設計用ツールの環境構築を行なっています。具体的な回路図を作る前にシステムレベルでシミュレーションを実施して性能のトレードオフ関係を整理することで、ぎりぎりのアナログ性能を追求できるようになります。トレードオフ関係を明らかにした結果、従来の回路では、お客様から求められる性能の実現が難しいことが判明することもあります。しかし、いち早く設計の難易度の高さに気づくことで、設計のパワーをその問題解決に集中することができ、限られた設計期間内で新しい回路方式を生み出すことも可能になります。研究開発の取り組みでは、こういったシステムレベルの設計をアナログ設計者が気軽に出来るように、ツールの使い方の普及活動を行うと同時に、再利用可能なライブラリの整備を進めています。さらに、新しいツールの情報収集を定常的に行い、積極的に導入しています。

5デジタル・ソフトの協調設計 ~Zynq・Altera SoC~


最近、Xilinx社のZynq®やAltera社のAltera SoCのように、FPGAとCPUを搭載したLSIデバイスが普及しつつあります。FPGAに対してはデジタル設計、CPUに対してはソフトウェア設計をそれぞれ行い、デジタル・ソフトウェアを統合した1つのシステムとして動作させることが可能です。従来は別々のチップに分かれていたFPGAとCPUを1つのチップにまとめることによるメリットは、単純に実装面積が小さくなってコンパクトになることだけではありません。通常、FPGA・CPU間の通信は1度チップの外に出て基板(ボード)を介して行ないますが、ZynqやAltera SoCではチップ内で完結するようになり通信速度が大きく上がります。その結果、デジタル・ソフトウェアを組み合せて1つの機能を実現するようなシステムでは、通信速度の遅さというこれまでのボトルネックが取り外され、システム全体の処理速度を引き上げることができる可能性(ポテンシャル)が広がりました。

その一方で、デジタルとソフトウェアを別々に設計して最後につなげて全体が動作すればよしとしてきた従来の設計では、ZynqやAltera SoCが持つポテンシャルを十分引き出せないことも分かってきました。つまり、デジタルとソフトウェアの双方を理解して、両者を一体の1つのシステムとして全体を最適化する技術が必要になってきました。しかし世の中で、そういった技術を持つ技術者はごく少数しか存在しません。そこで当社では、デジタル・ソフトウェアの協調設計サービスを開発しています。当社単独で実際に需要がありそうなシステムを予め作って技術を蓄積しておき、具体的なニーズが発生した際にお客様に素早く必要な設計サービスを提供します。

例えば、最近市場が拡大しつつある「画像認識システム」を下図のような構成で開発しています。


このシステムは、Zedboard®(AVNET社製)というZynqの評価用ボードの上に実装しました。画像認識アルゴリズムの基本部分はソフトウェアにて処理を行い、処理の一部をデジタル回路へ切り出すことで、高速化を図っています。ソフトウェアはZynq内のCPU上で、デジタル回路は同じくZynq内のFPGA上で動かします。アルゴリズムを理解した上で、どこまでをソフトウェアに担わせてどの部分をデジタル回路に持っていくかということを考え、システム全体で最適化してパフォーマンスを最大限に引き上げることが設計の鍵になります。

また、こういったシステムの開発では、全てを一から自前で作らずに、入手可能なライブラリやIPを出来る限り活用して、開発工数(開発期間)を最小限に抑えることも重要な技術です。例えばこのシステムでは、CPUにLinux-OSを搭載し、ソフトウェアはそのOS上で動かしています。Linux-OSを使うことで、Qt(GUIライブラリの一種)やOpenCV(画像処理のライブラリの一種)といった、オープンなプログラミングライブラリを利用することができます。さらに、Linux-OSでは各種のデバイスドライバが用意されているため、USBカメラを接続する場合にも、Linux-OSに含まれるUSBドライバを利用することができ、わざわざUSBインターフェースを独自に用意する必要がありません。FPGA上でも、ソフトウェアでは実現が難しいHDMIなどの高速インターフェースのIPをXilinx社のWebサイトから入手し、搭載しています。ただし、HDMIと画像認識アルゴリズムでは画像の規格が異なるため、規格変換用のデジタル回路を作ってHDMIのIPの手前に挿し込んでいます。このように、効率的に開発を進めるためには、既存のIPと自前の回路をうまく組み合わせる技術も求められます。




社長メッセージ | 会社概要