快捷方式

memmap

class tensordict.memmap(data: TensorDictBase, prefix: Optional[str] = None, copy_existing: bool = False, *, num_threads: int = 0, return_early: bool = False, share_non_tensor: bool = False)

將所有張量寫入新的 tensordict 中對應的記憶體映射張量。

參數:
  • data (TensorDictBase) – 要儲存的資料結構。

  • prefix (str) – 記憶體映射張量將儲存的目錄前綴。目錄樹結構將模仿 tensordict 的結構。

  • copy_existing (bool) – 如果為 False(預設值),如果 tensordict 中的項目已經是儲存在磁碟上的張量並具有關聯的檔案,但未根據前綴儲存在正確的位置,則會引發例外。如果為 True,則任何現有張量都將複製到新位置。

關鍵字參數:
  • num_threads (int, optional) – 用於寫入 memmap 張量的執行緒數量。預設為 0

  • return_early (bool, optional) – 如果 Truenum_threads>0,則該方法將傳回 tensordict 的 future。

  • share_non_tensor ( bool, optional) – 如果 True,非 Tensor 的資料將在各個進程之間共享,並且在單一節點內,任何 worker 上進行的寫入操作(例如原地更新或設定)將更新所有其他 worker 上的值。如果非 Tensor leaf 節點的數量很多(例如,共享大量非 Tensor 資料),這可能會導致 OOM 或類似錯誤。預設值為 False

然後 TensorDict 會被鎖定,這表示任何非原地的寫入操作都會拋出例外(例如,重新命名、設定或移除一個 entry)。一旦 tensordict 被解鎖,memory-mapped 屬性會變成 False,因為跨進程的 identity 不再保證。

傳回:

如果 return_early=False,則傳回一個新的 tensordict,其中 tensors 儲存在磁碟上,否則傳回一個 TensorDictFuture 實例。

注意

以這種方式序列化對於深度巢狀的 tensordicts 來說可能會很慢,因此不建議在訓練迴圈中呼叫此方法。

文件

取得 PyTorch 的完整開發者文件

查看文件

教學

取得針對初學者和進階開發者的深入教學

查看教學

資源

尋找開發資源並獲得問題解答

查看資源