This document discusses probabilistic modeling in Python using the pomegranate library. It begins with an overview of probabilistic modeling tasks and when to use pomegranate. It then discusses the major models supported by pomegranate including general mixture models, hidden Markov models, Bayesian networks, and Bayes classifiers. It provides examples of using these models and shows how pomegranate allows for complex probabilistic models to be built from simpler component distributions and submodels. The document concludes by demonstrating how mixtures of hidden Markov models can be trained in parallel using pomegranate.