- 发现Pythonx,可在与 Elixir 相同的 OS 进程中运行 Python 解释器,还包装了uv以设置包含代码所需 Python 依赖的虚拟环境。
以以下方式运行最近发布的 SmolVLM 模型的 MLX 版本:
Mix.install([{:pythonx, "~> 0.3.0"}])
Pythonx.uv_init("""...""")
Pythonx.eval(...)
- 使用
> elixir smolvlm.exs
运行
缓存加载的模型:可先加载模型一次并保存在 Elixir 变量中,多次调用,如:
{_, globals} = Pythonx.eval(...)
{desc1, _} = Pythonx.eval(...)
{desc2, _} = Pythonx.eval(...)
IO.inspect(desc1)
,IO.inspect(desc2)
- 几乎任何模型都可使用 Python 运行,对于在 Bumblebee 上运行模型有一定难度,
Pythonx
是在 Elixir 中运行模型的有用方式,可访问整个 Python 生态系统,但有局限性,如 Python 的全局解释器锁(GIL)会阻止多个线程同时执行 Python 代码,若用于集成 Python 需确保在单个 Elixir 进程中或其底层库可处理并发调用,否则更倾向使用 Elixir 的System.cmd/3
或Ports
通过 I/O 管理多个 Python 程序。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。