Explain the trade-offs between tensor parallelism, pipeline parallelism, and data parallelism when training a large language model.