文档
注册
评分
提单
论坛
小AI

图编译缓存

图编译缓存功能支持将图编译结果进行磁盘持久化,当应用程序重新运行时直接加载磁盘上缓存的编译结果。在编译并运行Graph过程中,为了减少图编译时长,可以开启图编译缓存功能。

使用约束

  • 根据options参数中的ge.graph_compiler_cache_dir和ge.graph_key确定缓存文件,缓存文件不存在则保存缓存,缓存文件存在则直接加载缓存。ge.graph_compiler_cache_dir和ge.graph_key同时配置非空时该功能生效。
  • ge.graph_compiler_cache_dir指定的缓存目录必须存在,否则会导致编译失败。
  • ge.graph_key由用户保证其唯一性,否则,在相同ge.graph_key的缓存已存在的情况下,会直接加载对应的缓存。
  • 多进程场景下如果不同的图使用了相同的graph key和cache dir,后触发缓存的图将不会实际编译,而是加载先缓存的图。
  • 图发生变化后,原来的缓存文件不可用,用户需要手动删除缓存目录中的缓存文件或者修改ge.graph_key,重新编译生成缓存文件。
  • 跨版本的缓存无法保证兼容性,如果版本升级,需要清理缓存目录重新编译生成缓存。

使用方法

1
2
3
4
5
6
std::map<ge::AscendString, ge::AscendString> session_options = {{"ge.graph_compiler_cache_dir", "./build_cache_dir"}};
std::shared_ptr<ge::Session> session = std::make_shared<ge::Session>(session_options);
const auto graph = CreateGraph();
std::map<ge::AscendString, ge::AscendString> graph_options = {{"ge.graph_key", "test_graph_001"}};
auto = session->AddGraph(0, graph, graph_options);
...

缓存文件生成规则

生成文件包括:

  • 模型缓存文件
  • 索引文件,便于用户通过graph_key快速找到对应的缓存文件,索引文件内容示例如下:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    {
        "cache_file_list":[
            {
                "cache_file_name":"./cache_dir/graph_$key1_20230117202307.om",
                "graph_key":"graph_$key1",
                "var_desc_file_name":"./cache_dir/graph_$key1_20230117202307.rdcpkt"
            },
            {
                "cache_file_name":"./cache_dir/graph_$key1_20230117203007.om",
                "graph_key":"graph_$key1",
                "var_desc_file_name":"./cache_dir/graph_$key1_20230117203007.rdcpkt"
            }
        ]
    }
    
  • 变量格式文件,仅在图中存在变量时生成。用于框架匹配模型缓存文件,如果graph_key对应的图内变量格式发生变更,则之前缓存的缓存文件将无法直接恢复使用,该场景下会重新触发编译流程重新生成缓存文件。
  • 如果开启了权重外置功能,即options选项中配置了ge.externalWeight参数,并且设置为1,则在ge.graph_compiler_cache_dir参数指定路径下还会生成weight目录,用于保存原始网络中的Const/Constant节点的权重信息。

文件名生成规则:

  • 当ge.graph_key配置值只包含大小写字母(A-Z,a-z)、数字(0-9)、下划线(_)、中划线(-)并且长度不超过128时
    • 索引文件命名为:ge.graph_key + “.idx”。
    • 模型缓存文件命名为: ge.graph_key + 时间戳 + “.om”。
    • 变量格式文件命名为: ge.graph_key + 时间戳 + “.rdcpkt”。
  • 不满足上面条件时,缓存文件会根据ge.graph_key的hashcode生成
    • 索引文件命名为:"hash_" + hashcode + “.idx”,比如hash_17242059865018222533.idx。
    • 模型缓存文件命名为: "hash_" + hashcode + 时间戳 + “.om”。
    • 变量格式文件命名为: "hash_" + hashcode + 时间戳 + “.rdcpkt”。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词