原文:AD Myths Debunked: AD will infect all my other libraries - Published 2022/05/26 By Johannes Lotz
この記事は 自動微分の誤った神話 シリーズの一部です。
プロジェクトに自動微分を導入すると、1次と2次の微分がとても速く得られると聞いたことがあると思います。しかし、自動微分の適用には、すべてのライブラリを含むコードベース全体を変更する必要があり、それらのライブラリを利用する他の内部ユーザーも自動微分を理解する必要があるとも聞いたことがあるかもしれません。社内の他のユーザーも自動微分を理解する事は大変な事なので、それ以上自動微分について考える事をやめてしまったかもしれません。
このような話しは、我々が長年にわたって何度も聞かされてきた話しです。
ここで、以下のような疑問点を考えてみて下さい
概念実証(POC)ができるのか?
手つかずにしておきたいコード部分を含むライブラリに自動微分を適用できるか?
他のユーザーに影響を与えることなく、ライブラリに自動微分を適用できるか?
これらの疑問点に対する答えは、すべて「Yes」です。
ここでは、非常によく見られる2つの状況を見てみましょう。
- 概念実証(PoC)は、自動微分の利点と実装の容易さを迅速に理解するための素晴らしい方法です。PoCに取り組むとき、私たちは本質的に、クライアントのライブラリの小さいが合理的なサブセットを使用します。 手動およびツールを用いた依存関係解析は、これを行うためにコードの関連するサブセットを抽出するのに役立ちます。もちろん、PoCを迅速に立ち上げ、実行することは重要です。私たちの経験により、自動微分を効率的に実装し、自動微分の影響を迅速に、情報に基づいた、専門的な評価で確認することができます。さらに、当社の自動微分ツールは、アクティブデータとパッシブデータを簡単に変換するAPIを備えており、自動微分コードと非自動微分コード間のインターフェースを可能にしています。スマートなコード設計の決定や最新のC++機能(テンプレートやラムダなど)と合わせて、自動微分が他のライブラリに不必要に拡張されるのを避けるための強力なテクニックとなります。
- もし、あなたが取り組んでいるライブラリが、内部ユーザーによって自動微分を感知しない他のライブラリに組み込まれる場合、クリーンなデータカプセル化によって自動微分を完全に隠しながら、あなたのライブラリの利点を生かすことが可能です。私たちのサポートにより、内部ユーザはランタイムと精度に関する利点だけを受ける事ができ、自動微分に関する事には関与しないことが可能です。
NAGの自動微分ツールセットは過去12年にわたり開発され、さらに10年にわたるC++による自動微分研究開発の経験を基に構築されています。私たちは、細部が重要であることを知っています。レガシーコードは私たちのビジネスであり、私たちが扱うことができないコードに出会ったことは一度もありません。
神話は、真実のように聞こえるかもしれませんが、私たちは、神話について詳しく話し、私たちの経験を共有することによって、企業がこれらの問題を解決する手助けをしたいと願っています。
結果は重要ですが、神話は重要ではありません。