HyenaDNA 完整教學

Repository: https://github.com/HazyResearch/hyena-dna Stars: 791 | Fork: 108 | License: Apache-2.0 Tags: genomics, foundation-models, language-models Paper: arXiv:2306.15794 | HuggingFace: LongSafari Primary Language: Python (含 CUDA C++ 加速核心) 最後更新: 2026-06-10

2. 核心架構

2.1 整體架構圖


graph TB
    subgraph Input["輸入層 Input Layer"]
        DNA["DNA 序列
ATCGATCG..."] TOK["Character Tokenizer
{A=0, C=1, G=2, T=3, N=4, PAD=5}"] EMB["DNA Embedding Layer
nn.Embedding(6, d_model)"] end subgraph Backbone["Hyena Backbone (N Layers)"] direction TB subgraph Layer["Hyena Block x N"] HYENA["Hyena Operator
(Long Convolution + Gating)"] FF["Feed-Forward Network
(GLU / GatedMLP)"] NORM1["LayerNorm"] NORM2["LayerNorm"] RES1["Residual Connection"] RES2["Residual Connection"] end end subgraph HyenaOp["Hyena Operator 內部"] direction LR PROJ["Linear Projections
Q, K, V 投影"] FILTER["Implicit Filter
(Parameterized Conv Kernel)"] FFT["FFT Convolution
O(N log N)"] GATE["Element-wise Gating
(Multiplicative)"] end subgraph Output["輸出層 Output Layer"] POOL["Pooling / Last Token"] DEC["Task Decoder
(MLP Head)"] PRED["Prediction
(Classification / Regression / LM)"] end DNA --> TOK --> EMB EMB --> NORM1 --> HYENA --> RES1 RES1 --> NORM2 --> FF --> RES2 RES2 --> |"Repeat N times"| NORM1 HYENA -.-> PROJ PROJ -.-> FILTER FILTER -.-> FFT FFT -.-> GATE RES2 --> POOL --> DEC --> PRED style Input fill:#e1f5fe,stroke:#0288d1 style Backbone fill:#fff3e0,stroke:#f57c00 style HyenaOp fill:#fce4ec,stroke:#c62828 style Output fill:#e8f5e9,stroke:#2e7d32

2.2 Hyena Operator 運作原理

Hyena operator 的核心思想是以 隱式參數化的長卷積 (implicit long convolution) 取代 Transformer 中的 self-attention:

  1. 投影 (Projection):輸入 x 被線性投影為 v (value)、以及多組門控信號 x_1, x_2, …
  2. 隱式濾波器 (Implicit Filter):使用小型 MLP 將位置資訊映射為卷積核權重,而非顯式儲存 N x N 的 attention matrix
  3. FFT 卷積 (FFT Convolution):透過快速傅立葉變換在頻域執行卷積,複雜度 O(N log N)
  4. 乘法門控 (Multiplicative Gating):多階段的 element-wise 乘法交互,賦予模型非線性的序列混合能力

2.3 專案程式碼結構

 1hyena-dna/
 2+-- train.py                          # 主訓練入口 (PyTorch Lightning)
 3+-- huggingface.py                    # HuggingFace 整合 (embedding extraction)
 4+-- standalone_hyenadna.py            # 獨立使用版本 (不依賴 Lightning)
 5+-- requirements.txt
 6+-- Dockerfile
 7+-- configs/                          # Hydra 設定檔
 8|   +-- config.yaml                   # 主設定
 9|   +-- experiment/hg38/              # 實驗設定 (pretrain / finetune / ICL)
10|   +-- dataset/                      # 資料集設定
11|   +-- model/layer/                  # 模型層設定 (hyena / attention / etc.)
12|   +-- optimizer/                    # 最佳化器設定
13|   +-- scheduler/                    # 學習率排程
14|   +-- pipeline/                     # 任務管線設定
15|   +-- task/                         # 任務類型 (LM / classification / regression)
16+-- src/
17|   +-- models/sequence/
18|   |   +-- hyena.py                  # Hyena operator 核心實作
19|   |   +-- long_conv.py              # 長卷積層
20|   |   +-- long_conv_lm.py           # 語言模型包裝
21|   |   +-- dna_embedding.py          # DNA embedding 層
22|   |   +-- block.py                  # 模型區塊組合
23|   |   +-- model.py                  # 完整模型定義
24|   +-- dataloaders/
25|   |   +-- datasets/
26|   |   |   +-- hg38_dataset.py       # HG38 預訓練資料集
27|   |   |   +-- hg38_char_tokenizer.py # 字元級 tokenizer
28|   |   |   +-- genomic_bench_dataset.py
29|   |   |   +-- nucleotide_transformer_dataset.py
30|   |   |   +-- species_dataset.py
31|   |   |   +-- chromatin_profile_dataset.py
32|   +-- tasks/
33|   |   +-- tasks.py                  # 任務定義 (LMTask etc.)
34|   |   +-- decoders.py               # 解碼頭 (classification / regression)
35|   |   +-- metrics.py                # 評估指標
36|   +-- ops/
37|   |   +-- fftconv.py                # FFT 卷積運算
38+-- evals/                            # 評估腳本
39|   +-- hg38_inference.py             # 推論取 logits
40|   +-- soft_prompting_genomics.py    # 軟提示 ICL
41|   +-- instruction_tuned_genomics.py # 指令微調 ICL
42+-- csrc/fftconv/                     # CUDA FFT 卷積加速核心
43+-- flash-attention/                  # Git submodule: Flash Attention

3. 安裝與設定

3.1 方法一:Conda 環境 (推薦開發用)

 1# 1. Clone 含 submodule
 2git clone --recurse-submodules https://github.com/HazyResearch/hyena-dna.git
 3cd hyena-dna
 4
 5# 2. 建立 conda 環境
 6conda create -n hyena-dna python=3.8 -y
 7conda activate hyena-dna
 8
 9# 3. 安裝 PyTorch (CUDA 11.7)
10conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 \
11    pytorch-cuda=11.7 -c pytorch -c nvidia
12
13# 4. 安裝 Python 依賴
14pip install -r requirements.txt
15
16# 5. 安裝 Flash Attention (加速用,需 CUDA 編譯環境)
17cd flash-attention
18git submodule update --init
19pip install -e . --no-build-isolation
20
21# 6. (選用) 安裝 fused LayerNorm (額外加速)
22cd csrc/layer_norm && pip install . --no-build-isolation

3.2 方法二:Docker (推薦可重現環境)

 1# Clone
 2git clone --recurse-submodules https://github.com/HazyResearch/hyena-dna.git
 3cd hyena-dna
 4
 5# 方法 A:Pull 預建映像
 6docker pull hyenadna/hyena-dna:latest
 7docker run --gpus all -it -p80:3000 hyenadna/hyena-dna /bin/bash
 8
 9# 方法 B:含 Nucleotide Transformer 資料集的映像
10docker pull hyenadna/hyena-dna-nt6:latest
11docker run --gpus all -it -p80:3000 hyenadna/hyena-dna-nt6 /bin/bash

3.3 方法三:HuggingFace + Colab (最簡單入門)

無需本地安裝,直接使用 Google Colab notebook。Free tier 可處理最多 450K 核苷酸的序列。

3.4 下載預訓練資料

1# 下載 Human Reference Genome (HG38)
2mkdir -p data/hg38/
3curl https://storage.googleapis.com/basenji_barnyard2/hg38.ml.fa.gz > data/hg38/hg38.ml.fa.gz
4curl https://storage.googleapis.com/basenji_barnyard2/sequences_human.bed > data/hg38/human-sequences.bed
5
6# 解壓 fasta 檔案
7gunzip data/hg38/hg38.ml.fa.gz

3.5 環境驗證

1# 快速驗證:從頭訓練小模型於 GenomicBenchmarks
2python -m train wandb=null experiment=hg38/genomic_benchmark_scratch
3# 若能正常跑完幾個 epoch 並印出 loss,表示環境正確

4. 使用方式與程式碼範例

4.1 範例一:使用 HuggingFace 載入預訓練模型並取得 DNA Embedding

這是最常見的使用方式 – 將 DNA 序列轉換為 embedding vector (嵌入向量) 以供下游任務使用。

 1"""
 2HyenaDNA Embedding Extraction (嵌入提取)
 3從預訓練模型取得 DNA 序列的向量表示
 4"""
 5import torch
 6import json
 7from transformers import PreTrainedModel
 8from standalone_hyenadna import HyenaDNAModel, CharacterTokenizer, HyenaDNAPreTrainedModel
 9
10# --- 1. 設定模型 ---
11# 可選模型: tiny-1k / small-32k / medium-160k / medium-450k / large-1m
12pretrained_model_name = "hyenadna-small-32k-seqlen"
13max_length = 32_768  # 須與模型匹配
14
15# --- 2. 從 HuggingFace 載入 ---
16model = HyenaDNAPreTrainedModel.from_pretrained(
17    f"LongSafari/{pretrained_model_name}",
18    download=True,
19)
20model.eval()
21
22# --- 3. 建立 Tokenizer ---
23tokenizer = CharacterTokenizer(
24    characters=['A', 'C', 'G', 'T', 'N'],
25    model_max_length=max_length + 2,  # +2 for BOS/EOS tokens
26    add_special_tokens=False,
27)
28
29# --- 4. Tokenize DNA 序列 ---
30dna_sequence = "ACGTACGTACGTACGT" * 100  # 範例:1600 bp
31tok_seq = tokenizer(dna_sequence, return_tensors="pt")
32input_ids = tok_seq["input_ids"]
33print(f"Input shape: {input_ids.shape}")  # [1, 1600]
34
35# --- 5. 取得 Embedding ---
36with torch.no_grad():
37    # 取得最後一層隱藏狀態
38    embeddings = model(input_ids)  # shape: [1, seq_len, d_model]
39
40    # 方法 A: Mean pooling (平均池化)
41    mean_embedding = embeddings.mean(dim=1)  # [1, d_model]
42
43    # 方法 B: 取最後一個 token (GPT-style)
44    last_token_embedding = embeddings[:, -1, :]  # [1, d_model]
45
46print(f"Embedding dim: {mean_embedding.shape[-1]}")
47print(f"Mean embedding: {mean_embedding[0, :5]}")  # 前 5 維

4.2 範例二:在 GenomicBenchmarks 資料集上微調 (Fine-tuning)

 1# =============================================================
 2# GenomicBenchmarks Fine-tuning (基因組基準測試微調)
 3# 使用預訓練 HyenaDNA backbone + 線性分類頭
 4# =============================================================
 5
 6# --- 步驟 1:下載預訓練權重 ---
 7# 從 HuggingFace 下載 tiny-1k-d256 模型
 8# https://huggingface.co/LongSafari/hyenadna-tiny-1k-seqlen-d256
 9# 將 .ckpt 檔案放到 outputs/ 目錄
10
11# --- 步驟 2:啟動微調 ---
12python -m train \
13    wandb=null \
14    experiment=hg38/genomic_benchmark \
15    dataset_name=human_enhancers_cohn \
16    train.pretrained_model_path=outputs/weights.ckpt \
17    dataset.max_length=500 \
18    model.layer.l_max=1024 \
19    model.d_model=256 \
20    model.n_layer=2 \
21    optimizer.lr=6e-4 \
22    trainer.devices=1 \
23    trainer.max_epochs=10
24
25# --- 參數說明 ---
26# dataset_name          : 8 個資料集之一 (auto-download)
27#   - human_enhancers_cohn (2 classes, 27791 seqs, median 500 bp)
28#   - human_enhancers_ensembl (2 classes, 154842 seqs)
29#   - human_ensembl_regulatory (3 classes, 289061 seqs)
30#   - human_nontata_promoters (2 classes, 36131 seqs)
31#   - human_ocr_ensembl (2 classes, 174756 seqs)
32#   - demo_coding_vs_intergenomic_seqs (2 classes, 100K seqs)
33#   - demo_human_or_worm (2 classes, 100K seqs)
34#   - dummy_mouse_enhancers_ensembl (2 classes, 1210 seqs)
35#
36# model.layer.l_max     : 模型最大序列長度 (>= dataset.max_length + 2)
37# train.pretrained_model_path : 預訓練權重路徑
38# model.checkpoint_mixer: True  # 啟用梯度檢查點 (省記憶體)
39# model.checkpoint_mlp  : True  # 同上

4.3 範例三:自訂資料集的預訓練與 In-Context Learning

 1"""
 2HyenaDNA Custom Pretraining + Evaluation Pipeline
 3自訂資料集預訓練 + In-Context Learning (ICL; 情境學習) 評估
 4"""
 5
 6# =============================================================
 7# Part A: 在自訂基因組上從頭預訓練
 8# =============================================================
 9# 假設你有自己的 .fasta 檔案 (例如:某微生物基因組)
10
11# 步驟 1:準備資料結構
12# data/
13# +-- custom_genome/
14#     +-- genome.fa          # 你的 FASTA 檔案
15#     +-- sequences.bed      # (選用) 序列區間定義
16
17# 步驟 2:啟動預訓練
18# 使用 species_dataset.py 作為 dataloader 範本
19"""
20python -m train \
21    wandb=null \
22    experiment=hg38/hg38_hyena \
23    model.d_model=128 \
24    model.n_layer=2 \
25    dataset.batch_size=256 \
26    train.global_batch_size=256 \
27    dataset.max_length=1024 \
28    optimizer.lr=6e-4 \
29    trainer.devices=1 \
30    trainer.max_epochs=100
31"""
32
33# =============================================================
34# Part B: Sequence Length Warmup (序列長度漸進訓練)
35# =============================================================
36# 從短序列逐步增加到長序列的課程學習策略
37# 設定在 configs/experiment/hg38/hg38_hyena_seqlen_warmup_reload.yaml
38
39WARMUP_STAGES = """
40callbacks:
41  seqlen_warmup_reload:
42    stage_params:
43      - epochs: 2      # Stage 1: 1K bp
44        seq_len: 1024
45        batch_size: 256
46      - epochs: 2      # Stage 2: 2K bp
47        seq_len: 2048
48        batch_size: 128
49      - epochs: 2      # Stage 3: 4K bp
50        seq_len: 4096
51        batch_size: 64
52      - epochs: 2      # Stage 4: 8K bp
53        seq_len: 8192
54        batch_size: 32
55      - epochs: 4      # Stage 5: 16K bp
56        seq_len: 16384
57        batch_size: 16
58      - epochs: 4      # Stage 6: 32K bp
59        seq_len: 32768
60        batch_size: 8
61"""
62
63# =============================================================
64# Part C: In-Context Learning (ICL; 情境學習)
65# =============================================================
66# HyenaDNA 支援兩種 ICL 模式:
67
68# 模式 1:Soft Prompting (軟提示)
69# 在輸入前加入可學習的 prompt token
70"""
71python -m evals/soft_prompting_genomics
72"""
73
74# 模式 2:Instruction Fine-tuning (指令微調)
75# 將分類任務包裝成指令格式
76"""
77python -m evals/instruction_tuned_genomics
78"""
79
80# =============================================================
81# Part D: 取得模型 Logits (用於下游分析)
82# =============================================================
83# 載入含 LM head 的完整模型取得 per-token logits
84"""
85python -m evals/hg38_inference
86"""
87# 輸出:每個位置對 {A, C, G, T, N} 的機率分布
88# 可用於:突變效應預測 (variant effect prediction)、
89#         序列生成 (sequence generation)、
90#         motif 發現 (motif discovery)

5. 在蛋白質設計/基因組模擬生態系中的定位

5.1 Domain 5 生態系定位

HyenaDNA 位於 Domain 5 「蛋白質設計與基因組模擬」生態系的 基因組序列基礎模型 (Genomic Sequence Foundation Model) 區位,扮演 DNA 序列理解與表示學習的核心角色:


graph LR
    subgraph GenomicsModels["B. 基因組與單細胞模擬"]
        HYENA["HyenaDNA
(DNA Foundation Model)
★ 本教學"] WGSIM["wgsim
(Reads Simulator)"] SCGPT["scGPT
(Single-cell FM)"] SCVI["scvi-tools
(Probabilistic scRNA)"] SCGEN["scgen
(Perturbation Pred)"] SPLAT["Splatter
(scRNA-seq Sim)"] BIOMED["biomed-multi-align
(Multi-omics)"] PYFEAT["PyFeat
(Feature Gen)"] end subgraph ProteinModels["A. 蛋白質設計與生成"] ESM["ESM
(Protein LM)"] RFDIFF["RFdiffusion
(Protein Diffusion)"] CHROMA["Chroma
(Protein Gen)"] COLAB["ColabFold
(Structure Pred)"] end HYENA -->|"DNA embedding
→ 基因表達預測"| SCGPT HYENA -->|"啟動子/增強子
特徵"| SCVI HYENA -->|"基因組 context
→ 蛋白序列映射"| ESM HYENA -->|"調控元素辨識
→ 標的驗證"| BIOMED WGSIM -->|"模擬定序讀段"| HYENA style HYENA fill:#ff9800,stroke:#e65100,color:#fff

5.2 在製藥研發管線 (WP1-WP7) 中的角色

工作包 (Work Package)HyenaDNA 的貢獻具體應用
WP1: 標的發現 (Target Discovery)識別 enhancer (增強子) / promoter (啟動子) 調控區域,輔助找出疾病相關基因調控異常
WP2: 標的驗證 (Target Validation)預測 variant effect (變異效應),評估 SNP (單核苷酸多態性) 對基因功能的影響
WP3: 先導化合物 (Lead Discovery)間接 – 提供基因組層級的 target context
WP4: 最佳化 (Optimization)不直接參與
WP5: 臨床前 (Preclinical)跨物種序列比較 (species classification),評估動物模型的基因組相似性
WP6: 臨床 (Clinical)中-高Pharmacogenomics (藥物基因組學): 預測個體基因變異對藥物反應的影響
WP7: 生物製劑 (Biologics)DNA 序列最佳化 – codon optimization (密碼子最佳化) 的基礎模型

5.3 藍海機會 (Blue Ocean Opportunities)

  1. 長程調控元素的合成資料生成 (Synthetic Regulatory Element Generation)

    • 利用 HyenaDNA 的 language model head 生成合成 enhancer/promoter 序列
    • 結合 GAN/diffusion model 實現條件式調控序列設計
    • 應用:合成啟動子庫用於基因治療載體最佳化
  2. Pharmacogenomics Foundation Model (藥物基因組學基礎模型)

    • 在 ClinVar / PharmGKB 上 fine-tune HyenaDNA
    • 預測 germline variant (種系變異) 對藥物代謝酵素 (CYP450 等) 活性的影響
    • 應用:精準醫療的患者分層 (patient stratification)
  3. 跨物種基因組遷移學習 (Cross-Species Transfer Learning)

    • 在多物種基因組上預訓練,提升動物模型 (preclinical) 到人體 (clinical) 的可轉譯性
    • 應用:pre-IND 階段的 species bridging 分析

6. 與其他工具的整合

6.1 與 scGPT 的整合 (DNA → Single-cell)

 1"""
 2HyenaDNA embedding → scGPT 基因表達預測
 3概念性整合:DNA 調控特徵輔助單細胞分析
 4"""
 5# Step 1: 用 HyenaDNA 取得啟動子區域 embedding
 6# (參考範例 4.1)
 7promoter_embedding = hyena_model(promoter_sequence)  # [1, seq_len, d_model]
 8
 9# Step 2: 平均池化取得 gene-level representation
10gene_repr = promoter_embedding.mean(dim=1)  # [1, d_model]
11
12# Step 3: 作為 scGPT 的額外基因特徵輸入
13# scGPT 的 gene embedding 可與 HyenaDNA 的 promoter embedding 融合
14# 提供 DNA 層級的調控資訊給單細胞模型

6.2 與 ESM / Protein Language Model 的整合 (DNA → Protein)

HyenaDNA 提供基因組 context,ESM 提供蛋白質序列表示,兩者的 embedding 可在多模態架構中融合:

整合策略說明適用場景
串聯特徵 (Concatenation)HyenaDNA gene embedding + ESM protein embedding 直接拼接基因-蛋白質功能預測
Cross-attention 融合DNA embedding 作為 key/value,protein embedding 作為 query轉錄調控建模
DNA→Protein pipelineHyenaDNA 識別 ORF/codon → ESM 預測蛋白質結構功能基因組學

6.3 與 AIKT Pipeline 的整合

在 AI-Knowledge Template (AIKT) 管線中的使用模式:

AIKT Layer整合方式
paper-search (L9)paper: HyenaDNA long-range genomics foundation model year=2023-2026
paper-qa-lite (L10)對 HyenaDNA 相關論文集做 RAG 問答
paper-tutorial (L15)將 HyenaDNA 原始論文 + 應用論文打包成教學 HTML
tu-plan-generator (L19)tu repos: <target_gene> <indication> 時,HyenaDNA 提供 variant effect 預測
research-pipeline-v2 (L18)在 Stage 2 (target validation) 中使用 HyenaDNA 做 regulatory element 分析

6.4 與 biomed-multi-alignment 的整合 (Multi-omics)

HyenaDNA 的基因組 embedding 可作為 biomed-multi-alignment 多模態對齊架構的其中一個模態輸入,實現 DNA-protein-cell phenotype 的聯合表示學習。


7. 優缺點分析

7.1 優點

面向說明
突破性長程建模100 萬 bp context length 是同類模型中最長的,可捕捉 enhancer-promoter 等遠距調控關係
單核苷酸解析度Character-level tokenization 保留完整序列資訊,不會像 k-mer 方法丟失位置敏感的變異
計算效率Hyena operator 的 O(N log N) 複雜度遠優於 attention 的 O(N^2),使超長序列訓練成為可能
豐富的預訓練模型7 種尺寸/長度組合的預訓練權重,從 Colab 到 A100 皆可使用
多元下游任務支援分類、回歸、LM、ICL (soft prompt / instruction tuning) 均有範例
完整訓練框架基於 PyTorch Lightning + Hydra 的模組化訓練框架,容易自訂新實驗
Docker 支援預建 Docker 映像 (含資料集),可重現實驗結果
Apache-2.0 授權商業友善的開源授權

7.2 缺點與限制

面向說明緩解策略
單物種預訓練僅在 hg38 (人類) 上預訓練,跨物種泛化能力未經充分驗證在自訂物種資料上 fine-tune (參考 species classification 範例)
單方向 (Causal)預訓練為從左到右的 causal LM,雖有實驗性 bidirectional 但效果不如 causal使用 model.bidirectional=True 做 from-scratch 訓練 (非預訓練)
依賴 Flash Attention安裝 flash-attention 需要 CUDA 編譯環境,對非 NVIDIA GPU 用戶不友善使用 Docker 預建映像跳過手動編譯
較舊的依賴版本PyTorch 1.13 / Python 3.8,與較新生態系可能有相容性問題使用 Docker 隔離環境
缺乏原生 variant effect 支援沒有內建的 zero-shot variant effect prediction pipeline需自行實作 logit 差異計算 (wild-type vs mutant)
文件品質README 詳盡但略顯零散,缺乏系統化 API 文件參考 standalone_hyenadna.py 和 Colab notebook 作為入門
社群維護速度自 2023 年發表後更新頻率降低,後續發展轉移至 Evo / Caduceus 等後繼模型關注 Hazy Research 的後繼專案 (Evo, Mamba-based 模型)
GPU 記憶體需求large-1m 模型需 A100 80GB,對一般研究者門檻較高從 tiny/small 模型開始,善用 gradient checkpointing (model.checkpoint_mixer=True)

7.3 與同類工具比較

特性HyenaDNADNABERT-2Nucleotide TransformerEvo
最大 Context Length1M bp128K bp12K bp131K bp
TokenizationCharacterBPE6-merCharacter
核心架構Hyena (Long Conv)Transformer + ALiBiTransformerStripedHyena
預訓練資料hg38 (人類)多物種多物種多物種 (2.7M genomes)
授權Apache-2.0Apache-2.0CC-BY-NC-SAApache-2.0
主要優勢超長 context多物種泛化最大訓練資料最新架構 + 多物種

7.4 建議使用情境

推薦使用 HyenaDNA 的場景

  • 需要分析 >32K bp 的長程基因組區域 (如完整基因座、TAD domains)
  • 研究 enhancer-promoter 長距離交互作用
  • 需要單核苷酸級別的 variant effect 預測
  • 作為基因組 representation learning 的基礎模型

考慮替代方案的場景

  • 跨物種分析 → 優先考慮 DNABERT-2 或 Evo
  • 短序列分類 (<1K bp) → Nucleotide Transformer 可能更簡單
  • 需要最先進架構 → Evo (StripedHyena) 或 Mamba-based 模型
  • 蛋白質相關任務 → 直接使用 ESM 系列

參考資料

  1. Nguyen, E. et al. (2023). HyenaDNA: Long-Range Genomic Sequence Modeling at Single Nucleotide Resolution. arXiv:2306.15794
  2. Poli, M. et al. (2023). Hyena Hierarchy: Towards Larger Convolutional Language Models. ICML 2023
  3. HuggingFace Model Hub: LongSafari
  4. Google Colab Notebook
  5. Stanford Hazy Research Blog