W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
package tensorflow;
option cc_enable_arenas = true;
option java_outer_classname = "ConfigProtos";
option java_multiple_files = true;
option java_package = "org.tensorflow.framework";
import "tensorflow/core/framework/cost_graph.proto";
import "tensorflow/core/framework/graph.proto";
import "tensorflow/core/framework/step_stats.proto";
import "tensorflow/core/protobuf/debug.proto";
import "tensorflow/core/protobuf/cluster.proto";
import "tensorflow/core/protobuf/rewriter_config.proto";
message GPUOptions {
//一個(gè)介于0和1之間的值, 指示可用的 GPU 內(nèi)存來(lái)分配每個(gè)進(jìn)程.
//1意味為了分配所有的 GPU 內(nèi)存, 0.5 意味著過(guò)程分配 50% 的可用 GPU 內(nèi)存.
double per_process_gpu_memory_fraction = 1;
// 要使用的 GPU 分配策略的類型的分?jǐn)?shù).
//
// 允許的值:
// "": 空字符串 (默認(rèn)) 使用系統(tǒng)選擇的默認(rèn)值這可能會(huì)隨著時(shí)間的推移而改變.
//
// "BFC":"Best-fit with coalescing" 算法, 從 dlmalloc 的版本簡(jiǎn)化了
string allocator_type = 2;
//延遲刪除多達(dá)這許多字節(jié), 以減少數(shù)量與 gpu 驅(qū)動(dòng)程序代碼的交互.
//如果為 0, 系統(tǒng)選擇合理的默認(rèn)值 (幾個(gè) MBs).
int64 deferred_deletion_bytes = 3;
// 如果為 true, 則分配器不分配整個(gè)指定的GPU 內(nèi)存區(qū)域, 而不是從小開(kāi)始, 并根據(jù)需要增長(zhǎng).
bool allow_growth = 4;
// 一個(gè)以逗號(hào)分隔的 GPU id 列表, 用于確定 "可見(jiàn)"到 GPU 設(shè)備的 "虛擬" 映射.
// 例如, 如果 TensorFlow可以看到 8 GPU 設(shè)備的過(guò)程中, 和一個(gè)想映射可視的 GPU 設(shè)備5和3作為 "/device:GPU:0", 和 "/device:GPU:1",
// 然后一個(gè)將此字段指定為 "53".
// 此字段類似于精神到 CUDA_VISIBLE_DEVICES 環(huán)境變量, 除了它適用于過(guò)程中可見(jiàn)的 GPU 設(shè)備.
// 注意: GPU 驅(qū)動(dòng)程序提供了可見(jiàn)的 gpu在一個(gè)不保證有任何關(guān)聯(lián)的順序機(jī)器中的物理 * GPU id.
// 此字段用于重新映射 "visible" 到 "virtual", 這意味著只操作進(jìn)程開(kāi)始后.
// 用戶必須使用供應(yīng)商特定的機(jī)制 (例如, CUDA_VISIBLE_DEVICES) 來(lái)控制在調(diào)用 TensorFlow 之前物理到可見(jiàn)的設(shè)備映射.
string visible_device_list = 5;
// 在事件輪詢循環(huán)中, 當(dāng)隊(duì)列不是空時(shí), 在 PollEvents 調(diào)用之間休眠這許多微秒.
// 如果值未設(shè)置或設(shè)置為 0, 則將其設(shè)置為非零默認(rèn).
int32 polling_active_delay_usecs = 6;
// 當(dāng)隊(duì)列為空時(shí), 在事件輪詢循環(huán)中休眠 PollEvents 調(diào)用之間的許多 millisconds.
// 如果值未設(shè)置或設(shè)置為 0, 則將其設(shè)置為非零默認(rèn).
int32 polling_inactive_delay_msecs = 7;
// 強(qiáng)制所有張量都為 gpu_compatible.
// 在啟用了 GPU 的 TensorFlow 上, 啟用此選項(xiàng)將強(qiáng)制將所有 CPU 張量分配給 Cuda 固定內(nèi)存.
// 通常, TensorFlow 會(huì)推斷出應(yīng)將哪個(gè)張量分配為固定內(nèi)存.
// 但是, 如果推理不完整, 此選項(xiàng)可以顯著加快設(shè)備內(nèi)存復(fù)制性能, 只要它符合內(nèi)存的大小.
// 請(qǐng)注意, 對(duì)于未知或非常大的模型, 此選項(xiàng)不是默認(rèn)情況下應(yīng)該啟用的,
// 因?yàn)樗?Cuda 固定內(nèi)存都是 unpageable 的, 有太多的固定內(nèi)存可能會(huì)對(duì)整個(gè)主機(jī)系統(tǒng)的性能產(chǎn)生負(fù)面影響.
bool force_gpu_compatible = 8;
};
// 傳遞給圖形優(yōu)化器的選項(xiàng)
message OptimizerOptions {
// 如果為 true, 則使用公共子表達(dá)式消除來(lái)優(yōu)化關(guān)系圖.
bool do_common_subexpression_elimination = 1;
// 如果為 true, 則在圖上執(zhí)行恒定的折疊優(yōu)化.
bool do_constant_folding = 2;
// 如果為 true, 則在關(guān)系圖上執(zhí)行函數(shù)內(nèi)聯(lián).
bool do_function_inlining = 4;
// 優(yōu)化級(jí)別
enum Level {
// L1 是默認(rèn)級(jí)別.
// 優(yōu)化執(zhí)行在 L1:
// 1. 共同子表達(dá)式消除
// 2. 恒定的折疊
L1 = 0;
// 不優(yōu)化
L0 = -1;
}
// 整體優(yōu)化水平.
// 實(shí)際應(yīng)用的優(yōu)化將是此級(jí)別所隱含的或已設(shè)置的標(biāo)志的邏輯或標(biāo)志.
Level opt_level = 3;
// 控制編譯器/jit的使用.
enum GlobalJitLevel {
DEFAULT = 0; // 默認(rèn)設(shè)置 (現(xiàn)在是"off", 但后來(lái)預(yù)期是 "on")
OFF = -1;
// 以下設(shè)置將啟用編譯, 更高的值更具積極性.
// 較高的值可能會(huì)減少并行性的機(jī)會(huì), 并可能會(huì)占用更多內(nèi)存.
// (目前, 沒(méi)有區(qū)別, 但預(yù)計(jì)會(huì)發(fā)生變化)
ON_1 = 1;
ON_2 = 2;
}
GlobalJitLevel global_jit_level = 5;
}
message GraphOptions {
// 刪除, 請(qǐng)使用下面的 optimizer_options.
reserved "skip_common_subexpression_elimination";
reserved 1;
// 如果為 true, 則使用控制流來(lái)安排接收節(jié)點(diǎn)的激活.(當(dāng)前被忽略.)
bool enable_recv_scheduling = 2;
// 控制如何優(yōu)化圖表的選項(xiàng).
OptimizerOptions optimizer_options = 3;
// 在返回成本模型詳細(xì)說(shuō)明之前要運(yùn)行的步驟數(shù)圖中每個(gè)節(jié)點(diǎn)的內(nèi)存使用情況和性能.
// 0意味沒(méi)有成本模型.
int64 build_cost_model = 4;
// 在收集成本模型的統(tǒng)計(jì)信息之前要跳過(guò)的步驟數(shù).
int64 build_cost_model_after = 9;
// 使用 Op 輸出形狀數(shù)據(jù)對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行注釋, 以使其可以靜態(tài)推斷.
bool infer_shapes = 5;
// 只放置運(yùn)行的子圖形, 而不是整個(gè)圖形.
// 這對(duì)于交互式圖形生成非常有用, 在這個(gè)過(guò)程中, 您可能會(huì)產(chǎn)生無(wú)法在調(diào)試進(jìn)程中放置的圖形.
// 特別是, 它允許客戶端在將節(jié)點(diǎn)添加到其位置約束為不可的關(guān)系圖之后繼續(xù)在會(huì)話中工作.
bool place_pruned_graph = 6;
// 如果為 true, 則將進(jìn)程之間的浮點(diǎn)值轉(zhuǎn)換為 bfloat16.
bool enable_bfloat16_sendrecv = 7;
// 如果 > 0, 記錄一個(gè)時(shí)間線, 每這許多步驟.
// 實(shí)例: 目前這對(duì) MasterSession 沒(méi)有影響.
int32 timeline_step = 8;
// 控制圖形重寫(xiě)類型和數(shù)量的選項(xiàng).
// 當(dāng)前無(wú)法通過(guò)公共 Python api 進(jìn)行配置 (即, 如果顯式導(dǎo)入 RewriterConfig, 則沒(méi)有 api 穩(wěn)定性保證).
RewriterConfig rewrite_options = 10;
};
message ThreadPoolOptionProto {
// 池中的線程數(shù).
// 0表示系統(tǒng)根據(jù)使用此選項(xiàng)的原始位置選取一個(gè)值 (有關(guān)詳細(xì)信息, 請(qǐng)參見(jiàn)特定字段的聲明).
int32 num_threads = 1;
// 線程池的全局名稱.
// 如果為空, 則根據(jù)線程池的范圍制作和使用, 例如, 對(duì)于會(huì)話線程池, 該會(huì)話只使用它.
// 如果為非空, 則:-與此名稱關(guān)聯(lián)的全局線程池將被查或創(chuàng)建.
// 例如, 這允許在多個(gè)會(huì)話中共享一個(gè)線程池 (例如, 如果未配置 inter_op_parallelism_threads, 則與默認(rèn)行為類似),但仍將分區(qū)分成一個(gè)大的和小的池.
// -如果已存在此 global_name 的線程池, 則如果現(xiàn)有池是使用此調(diào)用中指定的不同 num_threads 值創(chuàng)建的, 則為錯(cuò)誤.
// -threadpools 創(chuàng)建這種方式從來(lái)沒(méi)有垃圾收集.
string global_name = 2;
};
message RPCOptions {
// 如果為 true, 則始終使用 RPC 與會(huì)話目標(biāo)聯(lián)系.
// 如果為 false (默認(rèn)選項(xiàng)), TensorFlow 可以使用優(yōu)化的傳輸來(lái)避免 RPC 堆棧的客戶端主通信.
// 此選項(xiàng)主要用于測(cè)試 RPC 堆棧.
bool use_rpc_for_inprocess_master = 1;
};
// 會(huì)話配置參數(shù).
// 系統(tǒng)為未設(shè)置的字段選取適當(dāng)?shù)闹?
message ConfigProto {
// 從設(shè)備類型名稱 (例如, "CPU" 或 "GPU") 映射到該類型要使用的最大設(shè)備數(shù).
// 如果在 map 中找不到特定的設(shè)備類型, 系統(tǒng)將選取一個(gè)適當(dāng)?shù)臄?shù)字.
map<string, int32> device_count = 1;
// 單個(gè) op (對(duì)于某些 op 類型) 的執(zhí)行可以在一個(gè) intra_op_parallelism_threads 的池中并行.0表示系統(tǒng)選取適當(dāng)?shù)臄?shù)字.
int32 intra_op_parallelism_threads = 2;
// 執(zhí)行阻塞操作的節(jié)點(diǎn)排隊(duì)在每個(gè)進(jìn)程中可用的 inter_op_parallelism_threads 池上.
// 0表示系統(tǒng)選取適當(dāng)?shù)臄?shù)字.
// 請(qǐng)注意, 在進(jìn)程中創(chuàng)建的第一個(gè)會(huì)話設(shè)置所有未來(lái)會(huì)話的線程數(shù), 除非 use_per_session_threads 為真或配置了 session_inter_op_thread_pool.
int32 inter_op_parallelism_threads = 5;
// 如果為 true, 則使用此會(huì)話的新線程集, 而不是全局線程池.
// 僅由直接會(huì)話支持.如果為 false, 則使用由第一個(gè)會(huì)話創(chuàng)建的全局線程, 或由 session_inter_op_thread_pool 配置的每個(gè)會(huì)話線程池.
// 此選項(xiàng)已棄用.同樣的效果可以通過(guò)設(shè)置 session_inter_op_thread_pool 有一個(gè)元素, 其 num_threads 等于 inter_op_parallelism_threads.
bool use_per_session_threads = 9;
// 這個(gè)選項(xiàng)是實(shí)驗(yàn)性的-它可能會(huì)被未來(lái)的不同機(jī)制所取代.
// 配置會(huì)話線程池.
// 如果配置了此選項(xiàng), 則運(yùn)行調(diào)用的 RunOptions 可以選擇要使用的線程池.
// 預(yù)期的用途是, 當(dāng)某些會(huì)話調(diào)用需要在僅限于少量線程的后臺(tái)池中運(yùn)行時(shí):
// 例如, 會(huì)話可以配置為具有一個(gè)大池 (用于常規(guī)計(jì)算) 和一個(gè)小池 (用于定期、低優(yōu)先級(jí)的工作);
// 使用小池是當(dāng)前限制低優(yōu)先級(jí)工作的 inter-op 并行性的機(jī)制.
// 注意, 它不會(huì)限制單個(gè) op 內(nèi)核實(shí)現(xiàn)所產(chǎn)生的工作的并行性.
// -在培訓(xùn)中通常不需要使用此設(shè)置, 但可以幫助某些服務(wù)用例.
// -通常還建議設(shè)置此原型的 global_name 字段, 以避免創(chuàng)建多個(gè)大型池.
// 通常, 在單個(gè)大型池中運(yùn)行 non-low 優(yōu)先級(jí)的工作 (甚至跨會(huì)話) 會(huì)更好.
repeated ThreadPoolOptionProto session_inter_op_thread_pool = 12;
// 節(jié)點(diǎn)對(duì)設(shè)備的分配是在每個(gè) placement_period 步驟中重新計(jì)算的,直到系統(tǒng)預(yù)熱 (此時(shí)計(jì)算通常會(huì)自動(dòng)減速).
int32 placement_period = 3;
// 當(dāng)任何篩選器都是當(dāng)前會(huì)話時(shí), 將忽略與篩選器不匹配的所有設(shè)備.
// 每個(gè)篩選器可以部分指定, 例如:"/job:ps"、"/job:worker/replica:3", etc.
repeated string device_filters = 4;
// 適用于所有 GPUs 的選項(xiàng).
GPUOptions gpu_options = 6;
// 是否允許 soft placement . 如果 allow_soft_placement 是 true,
// 如果有如下情況,則將在 CPU 上放置 op:
// 1. 沒(méi)有o GPU 實(shí)現(xiàn)的 OP
// 或者
// 2. 沒(méi)有 GPU 設(shè)備是已知或注冊(cè)
// 或者
// 3. 需要與來(lái)自 CPU 的 reftype input(s) 合用.
bool allow_soft_placement = 7;
// 是否應(yīng)記錄設(shè)備放置.
bool log_device_placement = 8;
// 應(yīng)用于所有圖形的操作
GraphOptions graph_options = 10;
// 是否應(yīng)記錄設(shè)備放置.
// 此會(huì)話中所有阻塞操作的全局超時(shí).如果為非零, 且不在每個(gè)操作基礎(chǔ)上重寫(xiě), 則此值將用作所有阻塞操作的截止時(shí)間.
int64 operation_timeout_in_ms = 11;
// 此會(huì)話使用分布式運(yùn)行時(shí)應(yīng)用的選項(xiàng).
RPCOptions rpc_options = 13;
// 在此會(huì)話中使用的所有工作人員的可選列表.
ClusterDef cluster_def = 14;
// Next: 15
};
// 單個(gè)運(yùn)行 () 調(diào)用的選項(xiàng).
message RunOptions {
// TODO (pbar) 將其轉(zhuǎn)換為 TraceOptions 的原型, 允許跟蹤以更正交的方式進(jìn)行控制?
enum TraceLevel {
NO_TRACE = 0;
SOFTWARE_TRACE = 1;
HARDWARE_TRACE = 2;
FULL_TRACE = 3;
}
TraceLevel trace_level = 1;
// 等待操作完成的時(shí)間 (以毫秒為單位).
int64 timeout_in_ms = 2;
// 要使用的線程池 (如果配置了 session_inter_op_thread_pool).
int32 inter_op_thread_pool = 3;
// 是否應(yīng)通過(guò) RunMetadata 輸出由執(zhí)行器完成的分區(qū)圖.
bool output_partition_graphs = 5;
// 實(shí)例, 用于初始化 DebuggerState 的選項(xiàng) (如果已啟用).
DebugOptions debug_options = 6;
reserved 4;
}
// 單個(gè)Run()調(diào)用的元數(shù)據(jù)輸出 (即非張量).
message RunMetadata {
// 跟蹤此步驟的統(tǒng)計(jì)信息.
// 如果通過(guò) "RunOptions" 原型打開(kāi)跟蹤, 則填充.實(shí)驗(yàn): 在將來(lái)的版本中, 事件的格式和設(shè)置可能會(huì)發(fā)生變化.
StepStats step_stats = 1;
// 運(yùn)行調(diào)用定義的計(jì)算的成本關(guān)系圖.
CostGraphDef cost_graph = 2;
// 執(zhí)行的分區(qū)的圖.
repeated GraphDef partition_graphs = 3;
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: