老铁们,今天咱们深入聊聊如何在本地通过MLXPipeline
运行MLX模型。很多小伙伴可能对MLX还不太熟悉,说白了,这是一种支持你在本地和Hugging Face Model Hub上过招的模型运行方式。目前,MLX社区在Hugging Face上有超过150个开源模型,供大家取用,真的是开发者的福音。
这些模型可以通过MLXPipeline
类以本地管道的形式调用,或者通过他们的托管推理端点调用。对于那些想要快速上手的小伙伴,MLX也提供了一些不错的示例资源。
技术背景介绍
MLX地方性管道适合那些想在本地环境中使用开源模型的开发者,特别是在需要低延迟和高控制的场景中。结合LangChain,这些模型可以灵活地融入各种复杂的NLP任务。
原理深度解析
MLXPipeline
的核心在于与Transformers框架的紧密结合。通过指定模型ID,我们可以快速加载并配置这些模型。模型加载的方式灵活,你可以通过from_model_id
方法直接加载模型或者使用已有的transformers pipeline。
实战代码演示
下面我来展示下具体的代码演示。首先,我们需要安装一些必要的Python包:
%pip install --upgrade --quiet mlx-lm transformers huggingface_hub
然后,我们可以通过指定模型参数来加载模型:
from langchain_community.llms.mlx_pipeline import MLXPipeline
pipe = MLXPipeline.from_model_id(
"mlx-community/quantized-gemma-2b-it",
pipeline_kwargs={"max_tokens": 10, "temp": 0.1},
)
当然,如果你已经有transformers pipeline,也可以直接传递:
from mlx_lm import load
model, tokenizer = load("mlx-community/quantized-gemma-2b-it")
pipe = MLXPipeline(model=model, tokenizer=tokenizer)
接下来,我们可以将模型与提示模板组合,创建一个链来处理问题:
from langchain_core.prompts import PromptTemplate
template = """Question: {question}
Answer: Let's think step by step."""
prompt = PromptTemplate.from_template(template)
chain = prompt | pipe
question = "What is electroencephalography?"
print(chain.invoke({"question": question}))
这波操作可以说是相当丝滑,通过LangChain的强大功能,能让我们的模型推理过程更加流畅。
优化建议分享
我先前踩过一个坑,就是在使用过程中发现偶尔请求会超时。建议大家在本地运行的时候,使用代理服务来提高请求的稳定性。同时,MLXPipeline的pipeline_kwargs
参数可以根据需要微调,确保模型表现符合预期。
补充说明和总结
想要体验一站式大模型解决方案的朋友们,我个人一直在用 https://yunwu.ai,提供的服务相当不错。
今天的技术分享就到这里,希望对大家有帮助。开发过程中遇到问题也可以在评论区交流~
—END—