Получить FLOPS с помощью GPflow

Это как-то возможно в GPflow получить шлепки? Я нашел пример использования Tensorflow но понятия не имею, как использовать это в GPflow контекст:

g = tf.Graph()
run_meta = tf.RunMetadata()
with g.as_default():
    A = tf.Variable(tf.random_normal( [25,16] ))
    B = tf.Variable(tf.random_normal( [16,9] ))
    C = tf.matmul(A,B)

    opts = tf.profiler.ProfileOptionBuilder.float_operation()    
    flops = tf.profiler.profile(g, run_meta=run_meta, cmd='op', options=opts)
    if flops is not None:
        print('TF stats gives',flops.total_float_ops)

0 ответов

Я немного копаюсь в исходном коде GPFlow. Ключ к тому, чтобы заставить его работать, - это перехватить операцию Tensorflow, которую вы хотите профилировать, до того, как AutoFlow GPFlow создаст новый график.

В моем случае я хотел профилировать predict()функция. Вам нужна функцияmodel._build_predict()(есть один эквивалент логарифмической вероятности). Вот как это работает:

gpflow.reset_default_graph_and_session()
kernel = gpflow.kernels.RBF(1)
model = gpflow.models.GPR(X, Y, kernel)

run_metadata = tf.RunMetadata()
with model.enquire_session(session=None) as tf_session:
    predict_op = model._build_predict(X)

    tf_session.run(predict_op, options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE), 
                      run_metadata=run_metadata)

    opts = tf.profiler.ProfileOptionBuilder.float_operation()    
    prof = tf.profiler.profile(tf_session.graph, run_meta=run_metadata, 
                                cmd='op', options=opts)

print('FOps: ', prof.total_float_ops)
Другие вопросы по тегам