Cannot find config for target=llvm -keys=cpu

Because the tutorial only tunes conv2d tasks:

tasks = autotvm.task.extract_from_program(
    mod["main"], target=target, params=params, ops=(relay.op.get("nn.conv2d"),)
)

Although I don’t think missing one dense schedule will hurt the performance a lot, you can modify the code to the following to let AutoTVM tune the dense op as well:

tasks = autotvm.task.extract_from_program(
    mod["main"], target=target, params=params)
)

When no ops is given, AutoTVM extracts all tasks by default.