簡體   English   中英

在預測時間使用CUDA GPU獲得高吞吐量流

[英]Using CUDA GPUs at prediction time for high througput streams

我們正在嘗試開發具有面向用戶組件的自然語言處理應用程序。 用戶可以通過API調用模型,然后返回結果。 使用Keras和Theano對模型進行預訓練。 我們使用GPU來加快培訓速度。 但是,通過使用GPU,預測仍顯着加快。 當前,我們有一台帶有兩個GPU的機器。 但是,在運行時(例如,當運行面向用戶的位時)存在一個問題:通過CUDA共享GPU的多個Python進程似乎並不能提供並行處理的加速。 我們將nvidia-docker與libgpuarray(pygpu),Theano和Keras結合使用。 GPU仍然大部分處於空閑狀態,但是添加更多Python工人並不能加快該過程。

解決在API后運行GPU模型的問題的首選方法是什么? 理想情況下,在購買新GPU之前,我們將更有效地利用現有GPU。

我可以想象,我們需要某種類型的緩沖區,然后再將其發送給GPU,而不是為每個HTTP調用請求鎖定?

這不是對您更籠統的問題的答案,而是根據我對您所描述的場景的理解得出的答案。

如果有人編寫了一個使用GPU進行某些計算任務的系統的編碼,他們(希望)花了一些時間來並行化其執行,以便從GPU可以提供的全部資源中獲益,或者從中獲得收益。

這意味着,如果您添加第二個類似的任務(即使是並行執行),則完成任務的總時間應與串行完成任務的時間(即一個接一個地完成)的時間相似,因為未充分利用的GPU資源非常少為第二項任務受益。 實際上,兩個任務甚至可能會變慢(例如,如果它們都以某種方式充分利用了L2高速緩存,並且在一起運行時會對其進行重擊)。

無論如何,當您想提高性能時,要做的一件好事就是配置應用程序-在這種情況下,請使用nvprof分析器或其nvvp前端 (第一個鏈接是官方文檔,第二個鏈接是演示文稿)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM