華為 (Huawei)「Ascend (昇騰)」チップによる中国独自AI計算基盤の構築

NVIDIA依存からの脱却:中国拠点でAI開発を継続するためのHuawei Ascend移行実践ガイド

約17分で読めます
文字サイズ:
NVIDIA依存からの脱却:中国拠点でAI開発を継続するためのHuawei Ascend移行実践ガイド
目次

この記事の要点

  • 米国規制下での中国AI自律化戦略の核心
  • 華為Ascend(昇騰)チップとCANNアーキテクチャ
  • NVIDIA製GPUからの移行実践と技術的課題

1. なぜ今、Ascend移行ワークフローの確立が必要なのか

「NVIDIAのH20すら入手が遅れている」。

中国に開発拠点を持つ企業において、このような切実な課題に直面するケースは珍しくありません。米国の輸出規制強化は、もはや一時的な市場の変動ではなく、恒久的な構造変化として捉える必要があります。この環境下で、従来通りNVIDIAのエコシステムだけに依存し続けることは、事業継続性(BCP)の観点から見て極めて高リスクな選択と言えます。

米中対立下におけるサプライチェーン・デカップリングの現実

感情論や政治的な是非はさておき、ビジネスリーダーとして直視すべき事実は明確です。中国国内でのAI開発において、計算リソースの安定確保が「NVIDIA一択」では成立しなくなっているということです。

ここで浮上するのが、Huawei(華為技術)が展開する「Ascend(昇騰)」AIプロセッサです。現地の強力な後押しもあり、中国のエコシステムにおいてデファクトスタンダードの地位を固めつつあります。多くの組織が「使い慣れたCUDA環境を捨てたくない」と躊躇する間に、適応力の高い企業はすでにAscend環境への移行を進め、開発スピードを維持したままプロジェクトを推進しています。

Ascend 910BとNVIDIA A100/H100の性能・入手性比較

よく議論になるのがスペック比較です。カタログスペック上、Huaweiのチップは特定の演算精度においてNVIDIAの過去世代のハイエンドモデルに迫る数値を示すことがあります。

しかし、現在のAIハードウェア市場は急速に進化しています。NVIDIAの主力であるH100やBlackwellアーキテクチャでは、FP8といった低精度演算技術がForward演算効率層に導入され、学習効率が飛躍的に向上しています。一方で、AI訓練の標準精度としては現在BF16(BFloat16)が定着しており、従来のFP32からの移行が進む中、FP16はその表現レンジの狭さから後退しつつあります。Ascend 910B等は依然としてこのBF16を主力とするワークロードが多く、最新のNVIDIA環境との単純なカタログ値の比較だけでは、実運用での性能差を見誤るリスクがあります。

重要なのはピーク性能の数値競争ではなく、「入手性」と「実効性能」のバランスです。

  • 入手性: NVIDIA製ハイエンドGPU(H100やBlackwellなど)の中国向け正規ルート調達が極めて困難であるのに対し、Ascendシリーズは現地のサプライチェーンで完結しているため、納期と価格が安定しています。
  • 実効性能: ソフトウェアスタックの成熟度において、NVIDIAのCUDAエコシステムには確固たる優位性があります。しかし、後述するCANN(Compute Architecture for Neural Networks)の進化により、そのギャップは埋まりつつあります。NVIDIA A100は現在、クラウドベースの機械学習など中規模プロジェクト向けの成熟した選択肢としてコストパフォーマンスに優れていますが、主力モデルの世代交代が進む中でレガシーな位置づけになりつつあります。これと同クラスの演算能力を必要とするタスクにおいて、Ascendは現実的かつ有力な代替手段として機能します。

移行プロジェクトにおける典型的な失敗パターン

「とりあえずハードウェアを導入して試してみよう」という場当たり的なアプローチは、高い確率で計画の遅延や頓挫を招きます。業界で一般的に報告される失敗事例の多くは、以下のパターンに陥っています。

  1. 互換性の過大評価: 「PyTorchが動くならコードはそのままでいいだろう」という安易な想定は危険です。CUDA向けに高度に最適化されたライブラリやフレームワークは、Ascend向けのプラグイン(Torch-NPU等)と完全な互換性があるとは限りません。移行にはコードの書き換えや調整が伴う前提で計画を立てる必要があります。
  2. エンジニアのスキルミスマッチ: CUDAに特化したエンジニアに対し、適切なトレーニングや学習期間を設けずにCANN環境での開発を求め、現場のモチベーションを低下させてしまうケースです。
  3. 検証不足: ハードウェアアーキテクチャの違いによる推論精度や学習収束性の微妙な差異を見逃し、本番環境にデプロイしてから重大なトラブルに発展する事例が後を絶ちません。

本記事では、これらの落とし穴を回避し、既存のコード資産を最大限に活かしながらAscend基盤へ移行するための、具体的かつ実践的なワークフローを提示します。

2. 【Phase 1】現状資産の棚卸しと互換性アセスメント

移行作業に着手する前に、まずは「敵を知り、己を知る」プロセスが不可欠です。既存のAIモデルやコードベースが、どの程度Ascend環境に対応しているかを定量的に把握しましょう。

既存CUDAコードベースの依存関係マップ作成

まず行うべきは、現在のコード資産における「CUDA依存度」の可視化です。PyTorchやTensorFlowといったフレームワークの高レベルAPIのみを使用している場合、移行は比較的スムーズです。しかし、パフォーマンス向上のためにカスタムCUDAカーネルを書いている場合や、特定のNVIDIAライブラリ(TensorRT, cuDNNなど)に深く依存している場合は、大幅な書き換えが必要になります。

実務の現場では、以下の項目をチェックリスト化して確認することが推奨されます。

  • 使用しているディープラーニングフレームワークのバージョン
  • カスタム演算子(Custom Operators)の有無
  • 外部ライブラリ(OpenCV, NumPyなど)との連携部分
  • 分散学習時の通信ライブラリ(NCCLの使用状況)

Ascend対応演算子(Operator)のカバー率確認

HuaweiのAIプロセッサは、NPU(Neural Processing Unit)と呼ばれます。このNPU上で動作する演算子のカバー率は年々向上していますが、100%ではありません。特に最新の論文で発表されたばかりの特殊なレイヤーや、マイナーな活性化関数などはサポートされていない可能性があります。

Huaweiが提供するドキュメントや、コミュニティサイト(Giteeなど)で公開されている「Operator Support List」を参照し、自社のモデルで使用している演算子がサポートされているかを確認してください。もし未サポートの演算子がある場合、CPU実行にフォールバックさせるか、独自の演算子実装(TBE: Tensor Boost Engineを使用)を行うかの判断が必要になります。

移行難易度判定:自動変換可能か、手動書き換えが必要か

このアセスメントフェーズのゴールは、移行対象のモデルを以下の3つのカテゴリに分類することです。

  1. レベル低(自動変換): 標準的なAPIのみを使用しており、Huaweiの提供する移行ツールでほぼ自動的に動作するもの。
  2. レベル中(一部修正): 一部のAPIや設定の変更が必要だが、ロジックの大幅な変更は不要なもの。
  3. レベル高(再実装): カスタムCUDAカーネルや未サポート演算子を多用しており、CANNアーキテクチャに合わせて再設計・再実装が必要なもの。

この分類を行うことで、必要な工数と期間、そしてアサインすべきエンジニアのスキルセットを正確に見積もることが可能になります。プロジェクトマネジメントの観点からも、この初期評価は極めて重要です。

3. 【Phase 2】Ascend AI計算基盤の構築と環境セットアップ

【Phase 1】現状資産の棚卸しと互換性アセスメント - Section Image

アセスメントが完了したら、次は実際に開発・実行環境を構築します。ここでは、NVIDIA環境との違いを意識しながら、Ascend特有のインフラ構築手順を見ていきます。

ハードウェア構成:Atlas 800/900シリーズの選定基準

Ascendチップを搭載したサーバー製品群は「Atlas」シリーズとして展開されています。開発用や小規模な学習には「Atlas 800(推論・学習用サーバー)」、大規模モデルの学習には「Atlas 900(AIクラスター)」が一般的です。

選定の際は、単なるVRAM容量だけでなく、「HCCL(Huawei Collective Communication Library)」によるチップ間・ノード間通信の帯域幅を考慮する必要があります。NVIDIAのNVLinkに相当する高速インターコネクト技術が採用されていますが、トポロジー構成には独自のルールがあるため、インフラエンジニアと綿密な設計が必要です。

ソフトウェアスタック「CANN」のインストールと設定

NVIDIAにおけるCUDAに相当するのが、Huaweiの「CANN (Compute Architecture for Neural Networks)」です。これはチップの性能を引き出すためのヘテロジニアス計算アーキテクチャであり、ドライバ、コンパイラ、ライブラリ群を含みます。

セットアップの手順は以下の通りですが、バージョン依存性が非常に厳格である点に注意してください。

  1. NPUドライバのインストール: OSのカーネルバージョンと適合するものを選択。
  2. ファームウェアの更新: NPUチップ自体のファームウェアを最新化。
  3. CANN Toolkitのインストール: コンパイラ(ATC)やランタイム(ACL)を含むコアパッケージ。
  4. フレームワークアダプタの導入: PyTorchなどのフレームワークがNPUを認識するためのプラグイン。

特に、ドライバとCANN Toolkit、そしてPyTorchのバージョンの組み合わせ(マトリクス)は、Huaweiの公式サイトで常に最新情報を確認する必要があります。「少し古くても動くだろう」という甘い考えは、謎のエラー(Device side assert triggeredなど)の原因となります。

開発コンテナ(Docker)の準備と配布

環境構築の複雑さを回避するため、Dockerコンテナの活用は必須です。Huaweiは「Ascend Hub」というレジストリで、CANNや主要フレームワークがプリインストールされたDockerイメージを配布しています。

これをベースに、自社独自のライブラリやツールを追加した「標準開発コンテナ」を作成し、開発チーム全体に配布することを強く推奨します。これにより、開発者間で環境差異による不毛なトラブルを未然に防ぐことができます。

4. 【Phase 3】コード移植とモデル変換の実践ワークフロー

環境が整ったら、いよいよコードの移植作業に入ります。ここでは、PyTorchを例に、既存のコードをAscend環境で動作させるための具体的な手順を解説します。自動化できる領域と、人間の手による緻密な調整が必要な領域を明確に切り分けることが、スムーズな移行の鍵となります。

自動移行ツールによるスクリプト変換プロセス

Huaweiは、PyTorchやTensorFlowのスクリプトをAscend向けに変換するツール(例:ms_fmk_transplt や各種Adapter)を提供しています。これを使用すると、デバイス指定のコード(cuda:0 など)を、NPU向けの指定(npu:0)に自動的に書き換えてくれます。

例えば、PyTorchの場合、以下のような変更が自動または手動で行われます。

# 変更前 (CUDA)
import torch
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
model.to(device)

# 変更後 (Ascend NPU)
import torch
import torch_npu  # Ascend用アダプタをインポート
device = torch.device("npu:0")
model.to(device)

コードの見た目は非常にシンプルに見えますが、データローダーの設定や、分散学習の初期化コード(init_process_group のバックエンド指定をNVIDIAの nccl からHuaweiの hccl に変更するなど)も確実な修正が必要です。これらの機械的な置換プロセスは、移行の第一歩に過ぎません。

非互換APIの手動修正と代替実装パターン

自動ツールで変換しきれない部分こそが、エンジニアの腕の見せ所と言えます。よく直面する課題として、特定のテンソル操作がNPU上でサポートされていない、あるいは計算の挙動が微妙に異なるケースが挙げられます。

例えば、入力ごとにサイズが変わる動的なシェイプ(Dynamic Shape)を持つテンソル操作は、静的なコンパイルを好むAscendアーキテクチャにとって処理効率が落ちやすい領域です。これを回避するために、入力サイズを固定化(パディング)したり、動的シェイプに対応した特定の最適化APIを使用したりする工夫が求められます。

また、高度に最適化されたカスタムCUDAカーネルを使用している箇所は、HuaweiのTBE(Tensor Boost Engine)言語(Pythonベースのドメイン固有言語)を使って書き直すか、C++によるAI CPU演算子として実装し直す必要があります。これは難易度が高い作業ですが、このハードルを乗り越えれば、Ascend NPUの演算性能をフルに引き出すことが可能になります。

精度検証:NVIDIA GPU環境との出力差分チェック

コードが正常に動作するようになっても、計算結果が正しくなければモデルの価値は失われます。NPUは内部的に独自の浮動小数点演算の最適化を行っている場合があり、GPUと全く同じ結果になるとは限りません。

特に最近のAI開発のトレンドとして、訓練の標準精度はFP32からBF16(BFloat16)への移行が急速に進んでいます。従来よく使われていたFP16は、表現できる数値の幅(ダイナミックレンジ)が狭いため、学習中のオーバーフローなどによる精度低下のリスクがあり、適用領域が限定的になりつつあります。一方で、Forward演算の効率化を目的としてFP8が活用されるケースも増えています。実際に、最新の高性能モデルでも、BF16のフル精度での動作が推奨されるなど、BF16の重要性は高まるばかりです。

このような背景から、NVIDIA GPU環境(BF16やFP8を積極的に活用している最新環境)からAscend環境へ移行する際の精度検証は、より複雑になっています。検証プロセスとしては、同一の入力データと初期重みを使用し、GPU環境とNPU環境でそれぞれ推論・学習を1ステップ実行し、出力テンソルの差分(絶対誤差、相対誤差)を厳密に確認します。

許容範囲を超える誤差が出る場合は、単純にFP16を適用するのではなく、混合精度学習(Mixed Precision)の設定を見直す必要があります。Ascend環境でのBF16のサポート状況を確認しながら適切に活用するか、特定のレイヤーの演算精度を強制的にFP32に引き上げる(自動キャストの設定を解除する)などの対策を講じることで、モデルの性能劣化を防ぐことができます。

5. 【Phase 4】パフォーマンスチューニングと運用最適化

【Phase 3】コード移植とモデル変換の実践ワークフロー - Section Image

「動く」から「速く動く」へ。ここがビジネスインパクトを左右する重要なフェーズです。高価な計算リソースを遊ばせないためのチューニング手法を紹介します。

Ascend Insightを使ったボトルネック特定

NVIDIAのNsight Systemsに相当するプロファイリングツールが「Ascend Insight(またはMindStudioのプロファイリング機能)」です。これを使うことで、タイムライン上でどの処理に時間がかかっているかを可視化できます。

よくあるボトルネックは以下の通りです。

  • AICoreのアイドル時間: データ供給が追いついていない。
  • 同期処理の多発: CPUとNPU間の同期(.item().cpu() の呼び出し)が頻繁に行われている。
  • メモリ転送: ホストメモリとデバイスメモリ間の転送コスト。

これらのデータを基に、データローダーのワーカー数を調整したり、非同期転送を活用したりして、パイプラインの詰まりを解消していきます。

データパイプラインの最適化とホスト-デバイス間転送の削減

Ascendシステムでは、データの前処理(画像のリサイズや正規化など)をCPUで行うか、DVPP(Digital Vision Pre-Processing)と呼ばれる専用ハードウェアで行うかを選択できます。DVPPを活用することで、CPU負荷を下げつつ、高速に画像データをNPUメモリに展開することが可能です。

また、Pythonのループ処理で1つずつデータを転送するのではなく、バッチ単位でまとめて転送し、可能な限りNPU上で処理を完結させることがパフォーマンス向上の鍵です。

中国ローカルクラウド(Huawei Cloud)でのスケーリング

オンプレミスのAtlasサーバーで検証が完了したら、本番運用や大規模学習のためにクラウドへの展開を検討します。Huawei Cloudの「ModelArts」などのプラットフォームを利用すれば、Ascendクラスターをオンデマンドで利用可能です。

ここでは、分散学習の設定(HCCLの設定)が重要になります。ノード間の通信トポロジーを意識した設定を行うことで、リニアに近いスケーラビリティを得ることができます。中国国内でのサービス提供を前提とする場合、現地の法規制(データセキュリティ法など)に準拠したクラウド基盤を利用することは、コンプライアンスの観点からも有利に働きます。

6. 運用体制の確立とエンジニア教育

変更後 (Ascend NPU) - Section Image 3

技術的な移行が完了しても、それを運用する「人」と「組織」が変わらなければ、持続可能な開発はできません。プロジェクトマネジメントの観点からも、チーム全体の知識向上は不可欠です。

NVIDIA脳からの脱却:開発者向けリスキリング計画

長年NVIDIAのエコシステムに浸かってきたエンジニアにとって、Ascendへの移行は「方言」を学ぶようなものです。概念は似ていますが、用語やツールの使い勝手が異なります。

社内で定期的な勉強会を開催し、CANNの基礎概念やトラブルシューティング事例を共有する仕組みを作りましょう。特に「エラーログの読み方」は重要です。CANNのエラーメッセージは独特であり、初見では原因特定が難しいことがあります。ナレッジベース(Wikiなど)にエラーコードと対処法を蓄積していく活動が、チーム全体の生産性を守ります。

コミュニティ(Gitee等)の活用と最新情報のキャッチアップ

Ascendに関する最新情報や技術ドキュメント、サンプルコードの多くは、GitHubではなく、中国のコードホスティングサービス「Gitee」やHuaweiの公式フォーラムで公開されています。英語の情報も増えていますが、最先端の情報(特にバグフィックスや新機能)は中国語で先行して出ることが多いのが現状です。

翻訳ツールを駆使してでも、これらの一次情報にアクセスする習慣をつけることが、トラブル解決の近道です。また、現地のHuaweiサポートエンジニアとのコネクションを作ることも、プロジェクト成功の大きな要因となります。

まとめ:リスクを競争力に変える戦略的移行を

Huawei Ascendへの移行は、単なる「代替品の採用」ではありません。それは、巨大な中国市場において、地政学リスクに左右されずにビジネスを継続・成長させるための「自律的な基盤」を手に入れることを意味します。

初期の学習コストや移行工数は確かに発生します。しかし、NVIDIA GPUの入荷を指をくわえて待つリスクと、能動的に現地エコシステムに適応し、安定した開発環境を構築するメリットを天秤にかければ、答えは明白でしょう。

既存資産の棚卸しから、具体的な移行計画の策定、そしてエンジニアの教育まで、移行プロジェクトを成功に導くためには多角的なアプローチが求められます。移行のリスクとコストを正確に見積もり、自社の状況に合わせた最適なロードマップを描くためには、専門的な知見を活用しながら計画的に進めることが推奨されます。

NVIDIA依存からの脱却:中国拠点でAI開発を継続するためのHuawei Ascend移行実践ガイド - Conclusion Image

コメント

コメントは1週間で消えます
コメントを読み込み中...