Observer phase is called calibration in the tutorial link, basically it runs several iterations and us observer to collect the statistics of the activation and weight, which will be used to do quantization in convert():

# Calibrate with the training set
evaluate(myModel, criterion, data_loader, neval_batches=num_calibration_batches)


You need to fuse batch norm, can refer to this post: Static quantizing and batch norm error (could not run aten::native_batch_norm with args from QuantCPUTensorid backend') 8


Other than that fuse is not necessary but fuse will help on the performance and accuracy.