What's the differences between relay.build and nnvm.compiler.build?

Here are two methods to convert model, what’s the differences?
1.first method:

mod,params =relay.frontend.from_mxnet(sym,shape_dict,arg_params=arg_params,aux_params=aux_params)
 with relay.build_config(opt_level=opt_level):
    graph, lib, params = relay.build(mod, target=target, params=params)

2.second method:

nnvm_sym, nnvm_params = nnvm.frontend.from_mxnet(sym, arg_params, aux_params)
with nnvm.compiler.build_config(opt_level=opt_level):
    graph, lib, params = nnvm.compiler.build(nnvm_sym, target, shape_dict, params=nnvm_params)

the answer is to use relay.build. Relay is a new version of nnvm and the nnvm.compiler is a legacy API that gets deprecated, and will be removed in the future