一种简易的python c++协同定位和dump数据的方式
在vllm和pytorch的开发过程中,有时候需要在vllm层和pytorch层,在某一时刻同时dump数据。
可以采用如下方法去铆钉该时刻
- 环境变量
python端可以如下设置
if(attn_metadata.prefill_metadata is not None or not USE_DECODER_LAYER_FUSE_MODE):for i in range(self.start_layer, self.end_layer):# if i % 2 == 1:# os.environ['DUMP_FILE'] = str(i%2)if i == 32:save_tensor = Trueos.environ['DUMP_FILE'] = str(save_idx+1)else:save_tensor = Falseos.environ['DUMP_FILE'] = "0" |
在torch端,可以铆钉该环境变量,来决定是否dump
auto env_str = c10::str(getenv("DUMP_FILE"));bool save = false;if(env_str != c10::str("0")) {//std::cout << "enableing...... dumpling..." << std::endl;save = true;}//std::cout << "fuse mla info is " << env_str << "device is:" << int(at::device_of(qkv_a)->index()) << std::endl; |
局限性:要确保在一个进程内