sequence-models
Guides pomegranate sequence workflows with MarkovChain, DenseHMM, and SparseHMM, including sequence shapes, variable-length batches, transition setup, Baum-Welch fitting, priors, posterior decoding, and Viterbi.
- License 许可
- MIT
- 最近更新
- 2026-09-03
- Stars
- ★ 351
- Forks
- 27
01 前言 Front Matter
- name
- sequence-models
- license
- MIT
- metadata
- { "disco-role": "operating" }
- description
- Guides pomegranate sequence workflows with MarkovChain, DenseHMM, and SparseHMM, including sequence shapes, variable-length batches, transition setup, Baum-Welch fitting, priors, posterior decoding, and Viterbi.
- disable-model-invocation
- true
02 资源文件 3
- 参考文档references/api-reference.md4.2 KB
- 参考文档references/troubleshooting.md2.9 KB
- 脚本scripts/smoke_sequence_models.py1.9 KB
03 SKILL.md 正文
sequence-models
Use this sub-skill when
Use this sub-skill for pomegranate sequence models: k-th order categorical MarkovChain, dense-transition DenseHMM, sparse-transition SparseHMM, sequence likelihood scoring, sequence sampling, hidden-state posterior decoding, Viterbi paths, variable-length sequence training, and prior-weighted/semi-supervised HMM learning.
Start here
Typical imports:
from pomegranate.distributions import Categorical, ConditionalCategorical, Exponential, Normal
from pomegranate.markov_chain import MarkovChain
from pomegranate.hmm import DenseHMM, SparseHMM
Read references/api-reference.md for constructors, sequence data shapes, dense/sparse edge formats, and examples. Run scripts/smoke_sequence_models.py to verify tiny MarkovChain, DenseHMM, and SparseHMM workflows.
Core workflow
- Choose the model. Use
MarkovChainfor observed categorical sequences. UseDenseHMMwhen hidden state transitions are dense. UseSparseHMMwhen only a few state transitions are possible. - Shape input as sequences. Most HMM/Markov-chain scoring uses
(n, length, d). HMM fitting can also accept lists of sequences or grouped tensors for variable lengths. - Create emissions. HMM states are pomegranate distributions such as
Normal,Exponential, or richer distributions. - Define starts, ends, and transitions. Dense HMMs use a transition matrix; sparse HMMs use
[start_distribution, end_distribution, probability]edge triples plus optional starts/ends. - Train or score. Use
fitfor Baum-Welch/EM,summarize/from_summariesfor chunked updates, andlog_probabilityfor sequence likelihoods. - Decode states. Use
predict,predict_proba,predict_log_proba, orviterbidepending on whether you need posterior marginals or a best path.
Route elsewhere when
- You need base emissions or categorical distributions: read ../distributions/SKILL.md.
- You need non-sequential mixtures or classifiers: read ../mixtures-and-classifiers/SKILL.md.
- You need Bayesian networks or factor graphs over discrete variables: read ../graph-models/SKILL.md.
Guardrails
- HMMs are over sequences; do not pass ordinary
(n, d)arrays to HMM scoring/fitting unless the method specifically documents that format. SparseHMMneeds explicit nonzero edges; if every state connects to every state, useDenseHMM.- Sampling from HMMs requires either fixed
sample_lengthor usable end probabilities. - Prior tensors for HMMs must align with sequence shape and state count.
- Read references/troubleshooting.md when variable-length data, edge formats, start/end probabilities, priors, or sampling fail.
04 同仓库更多 Skills
passnet-triton-opt
Make a single PassNet Triton kernel fast AND numerically faithful: performance model (when a replacement can win at all), block/grid/warp tuning, autotune policy, launch overhead, and per-op numeric recipes to pass the dtype baseline tolerances. Use when a pass matches and is correct but speedup below expected, or when correctness fails by small numeric margins.
passnet-solve
END-TO-END playbook for solving one PassNet sample: analyze the computation graphs, decide the optimization strategy (what to fuse, what to replace, what to leave alone), drive the iteration loop, and maximize the sample score. This is the ENTRY skill — invoke it first for any PassNet optimization task; it tells you when to use passnet-pattern-fusion, passnet-triton-opt and passnet-feedback.
passnet-skill
PassNet GPU kernel optimization via compiler passes. Design and implement Triton-based optimization passes, create pass files under ./pass_dir/, self-evaluate with pass_evaluator, and iterate to maximize GPU speedup.
passnet-pattern-fusion
Author PassNet pass files: write patterns that actually MATCH the FX graph, pick fusion regions (which ops to absorb into one Triton kernel), and structure multi-pass submissions with the mandatory shared-dispatch architecture. Use when creating or fixing pattern()/replacement_args()/replacement_func() files, when a pass "failed to match", or when deciding how to fuse multiple kernels/ops.
passnet-orchestrate
Round/batch planning and decision support for PassNet graph optimization. Use for multi-sample triage, worker allocation, eval-budget policy, and post-eval keep/revert decisions. For solving one concrete sample end to end, use passnet-solve as the entry skill; consult this skill only when you need broader planning or a specific decision gate.
passnet-feedback
Fast, deterministic feedback for PassNet work: pre-flight pattern/match verification WITHOUT burning a GPU evaluation, per-node bottleneck analysis of a sample's graphs, and eval-log parsing into per-variant status + estimated score + failure classification. Use BEFORE every GPU evaluation (check_pattern), at the START of a sample (analyze_graph), and AFTER every evaluation (parse_eval_log).