PyTorch 2.1獲英特爾(Intel)諸多貢獻,主要強化模型在CPU的運算效能,加入了包括TorchInductor-CPU最佳化、CPU動態形狀推理路徑與C++打包器等新功能。整體來說,PyTorch在人工智慧開發的效能和效率獲得強化,CPU動態形狀推理路徑提高了PyTorch對大型語言模型的支援,而且C++打包器更是減少Python的執行成本,有效提升輕量級工作負載的效能。

TorchInductor-CPU最佳化能夠改善Bfloat16的推理效能,運用第三代與第四代Intel Xeon Scalable處理器內建的硬體加速器,便可加速Bfloat16資料類型的內積運算,增加圖模式下的效能。不過,如果開發人員是在第四代Intel Xeon Scalable處理器上部署模型,則能夠完全利用高級矩陣擴充AMX功能,來獲得torch.compile更好的運算效能。

PyTorch 2.0中有一個重要功能更新是動態形狀(Dynamic Shape),該功能允許模型在推理時處理可變大小的輸入,這代表模型不必在訓練時,就確定所有輸入資料精確的形狀,進而增加了模型的靈活性和應用範圍,對於需要處理各種大小輸入的應用,像是文字或是圖像處理,這是一個相當重要的功能。

而在PyTorch 2.1中,CPU動態形狀推理路徑更進一步最佳化這項功能,在使用CPU時更好地支援動態形狀,也是說在使用CPU進行推理時,模型可以更有效地處理動態形狀輸入,改進功能性和效能。

新的C++打包器功能,則允許開發者將深度學習模型加速元件TorchInductor生成的核心和外部核心的呼叫程式碼,從Python轉換成為C++。該功能有兩個主要好處,第一是透過C++代替Python呼叫核心,可以減少Python所產生的額外效能成本,對於受到Python額外執行成本較大影響的輕量級工作負載尤為重要。另外,C++打包器也是支援無Python環境部署模型的重要環節,對模型部署提供更好的靈活性和可擴展性。

PyTorch 2.1還新加入了一種基於閃光注意力的比例內積演算法(Flash-attention-based scaled dot product algorithm),這是一種CPU最佳化演算法,專門改善Transformer模型中的比例內積式注意力(Scaled Dot Product Attention,SDPA)計算效能,而SDPA是一個在PyTorch 2.0才推出的重要功能。新演算法的重點在於,開發者不需要更改前端使用方式即可利用SDPA最佳化,大幅加速Transformer模型的訓練和推理過程,並且支援FP32和Bfloat16資料類型。

PyTorch 2.1也提供了一個新的量化(Quantization)流程,用於在模型訓練完成後,透過TorchInductor以x86 CPU裝置作為後端,供開發者對模型進行後訓練量化,最佳化模型在x86架構CPU上的執行效率和效能。

熱門新聞

Advertisement