Out of the box, it uses mempool.space and blockstream to pull fee estimates. However, you can use your own mempool.space instance and a local bitcoind backend in order to not rely on external services.
Adding the feeurl option to lnd.conf will use these values instead of bitcoind.
It uses the fee estimator logic from the mempool.space as well as a configurable multiplier. This will help with the ultra conservative nature of bitcoind’s fee estimator that can take several hours to reduce rates as the mempool is clearing up.