defmodule Edifice.MixProject do use Mix.Project @version "0.2.0" @source_url "https://github.com/blasphemetheus/edifice" def project do [ app: :edifice, version: @version, elixir: "~> 1.18", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, deps: deps(), aliases: aliases(), dialyzer: [plt_add_apps: [:mix, :jason]], # Docs name: "Edifice", description: "186 neural network architectures for Nx/Axon: transformers, Mamba, diffusion, GNNs, audio, robotics, and more", source_url: @source_url, homepage_url: @source_url, docs: docs(), package: package() ] end def application do [ extra_applications: [:logger] ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] defp deps do [ # ML Core {:nx, "~> 0.10.0"}, {:axon, "~> 0.8"}, {:polaris, "~> 0.1"}, # GPU Backend (optional - users bring their own) {:exla, "~> 0.10.0", optional: true}, # Dev & Test {:ex_doc, "~> 0.34", only: :dev, runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:stream_data, "~> 1.1", only: [:dev, :test]}, {:benchee, "~> 1.0", only: :dev}, {:kino, "~> 0.14", only: :dev}, {:kino_vega_lite, "~> 0.1", only: :dev}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:mix_audit, "~> 2.1", only: [:dev, :test], runtime: false}, {:doctor, "~> 0.22.0", only: :dev, runtime: false} ] end defp docs do [ main: "Edifice", extras: [ "README.md", "CHANGELOG.md", "LICENSE", # Getting Started "guides/ml_foundations.md", "guides/core_vocabulary.md", "guides/problem_landscape.md", "guides/reading_edifice.md", "guides/learning_path.md", # Architecture Guides "guides/architecture_taxonomy.md", "guides/state_space_models.md", "guides/attention_mechanisms.md", "guides/recurrent_networks.md", "guides/vision_architectures.md", "guides/convolutional_networks.md", "guides/contrastive_learning.md", "guides/graph_and_set_networks.md", "guides/generative_models.md", "guides/dynamic_and_continuous.md", "guides/building_blocks.md", "guides/meta_learning.md", "guides/uncertainty_and_memory.md" ], groups_for_extras: [ "Getting Started": [ "guides/ml_foundations.md", "guides/core_vocabulary.md", "guides/problem_landscape.md", "guides/reading_edifice.md", "guides/learning_path.md" ], Reference: [ "guides/architecture_taxonomy.md" ], "Guides: Sequence Processing": [ "guides/state_space_models.md", "guides/attention_mechanisms.md", "guides/recurrent_networks.md" ], "Guides: Representation Learning": [ "guides/vision_architectures.md", "guides/convolutional_networks.md", "guides/contrastive_learning.md", "guides/graph_and_set_networks.md" ], "Guides: Generative & Dynamic": [ "guides/generative_models.md", "guides/dynamic_and_continuous.md" ], "Guides: Composition & Enhancement": [ "guides/building_blocks.md", "guides/meta_learning.md", "guides/uncertainty_and_memory.md" ] ], groups_for_modules: [ Feedforward: [ Edifice.Feedforward.MLP, Edifice.Feedforward.KAN, Edifice.Feedforward.TabNet ], Convolutional: [ Edifice.Convolutional.Conv, Edifice.Convolutional.ResNet, Edifice.Convolutional.DenseNet, Edifice.Convolutional.TCN, Edifice.Convolutional.MobileNet, Edifice.Convolutional.EfficientNet ], Recurrent: [ Edifice.Recurrent, Edifice.Recurrent.XLSTM, Edifice.Recurrent.MinGRU, Edifice.Recurrent.MinLSTM, Edifice.Recurrent.DeltaNet, Edifice.Recurrent.TTT, Edifice.Recurrent.Titans, Edifice.Recurrent.Reservoir ], "State Space Models": [ Edifice.SSM.Mamba, Edifice.SSM.MambaSSD, Edifice.SSM.MambaCumsum, Edifice.SSM.MambaHillisSteele, Edifice.SSM.S4, Edifice.SSM.S4D, Edifice.SSM.S5, Edifice.SSM.H3, Edifice.SSM.Hyena, Edifice.SSM.BiMamba, Edifice.SSM.GatedSSM, Edifice.SSM.Hybrid, Edifice.SSM.Zamba ], Attention: [ Edifice.Attention.MultiHead, Edifice.Attention.GQA, Edifice.Attention.Perceiver, Edifice.Attention.FNet, Edifice.Attention.LinearTransformer, Edifice.Attention.Nystromformer, Edifice.Attention.Performer, Edifice.Attention.RetNet, Edifice.Attention.RWKV, Edifice.Attention.GLA, Edifice.Attention.HGRN, Edifice.Attention.Griffin ], Vision: [ Edifice.Vision.ViT, Edifice.Vision.DeiT, Edifice.Vision.SwinTransformer, Edifice.Vision.UNet, Edifice.Vision.ConvNeXt, Edifice.Vision.MLPMixer ], Generative: [ Edifice.Generative.VAE, Edifice.Generative.VQVAE, Edifice.Generative.GAN, Edifice.Generative.Diffusion, Edifice.Generative.DDIM, Edifice.Generative.DiT, Edifice.Generative.LatentDiffusion, Edifice.Generative.ConsistencyModel, Edifice.Generative.ScoreSDE, Edifice.Generative.FlowMatching, Edifice.Generative.NormalizingFlow ], Contrastive: [ Edifice.Contrastive.SimCLR, Edifice.Contrastive.BYOL, Edifice.Contrastive.BarlowTwins, Edifice.Contrastive.MAE, Edifice.Contrastive.VICReg ], Graph: [ Edifice.Graph.GCN, Edifice.Graph.GAT, Edifice.Graph.GIN, Edifice.Graph.GraphSAGE, Edifice.Graph.GraphTransformer, Edifice.Graph.PNA, Edifice.Graph.SchNet ], Sets: [ Edifice.Sets.DeepSets, Edifice.Sets.PointNet ], Energy: [ Edifice.Energy.EBM, Edifice.Energy.Hopfield, Edifice.Energy.NeuralODE ], Probabilistic: [ Edifice.Probabilistic.Bayesian, Edifice.Probabilistic.MCDropout, Edifice.Probabilistic.EvidentialNN ], Memory: [ Edifice.Memory.NTM, Edifice.Memory.MemoryNetwork ], Meta: [ Edifice.Meta.MoE, Edifice.Meta.SwitchMoE, Edifice.Meta.SoftMoE, Edifice.Meta.LoRA, Edifice.Meta.Adapter, Edifice.Meta.Hypernetwork, Edifice.Meta.Capsule ], Liquid: [ Edifice.Liquid ], Neuromorphic: [ Edifice.Neuromorphic.SNN, Edifice.Neuromorphic.ANN2SNN ], "Building Blocks": [ Edifice.Blocks.RMSNorm, Edifice.Blocks.SwiGLU, Edifice.Blocks.FFN, Edifice.Blocks.TransformerBlock, Edifice.Blocks.ModelBuilder, Edifice.Blocks.RoPE, Edifice.Blocks.ALiBi, Edifice.Blocks.PatchEmbed, Edifice.Blocks.SinusoidalPE, Edifice.Blocks.AdaptiveNorm, Edifice.Blocks.CrossAttention ], Internals: [ Edifice.SSM.Common, Edifice.SSM.HybridBuilder, Edifice.Graph.MessagePassing, Edifice.Utils.FusedOps, Edifice.Utils.ODESolver, Edifice.Utils.Common ] ] ] end defp package do [ licenses: ["MIT"], links: %{"GitHub" => @source_url}, files: [ "lib", "mix.exs", ".formatter.exs", "README.md", "CHANGELOG.md", "LICENSE", "guides" ], exclude_patterns: [~r/\.bak$/] ] end defp aliases do [ setup: ["deps.get"] ] end end