Оркестрирање на LLM цевководи од големи размери со DSPy и LangChain за подобрени DevOps
Вовед
Доаѓањето на големите јазични модели (LLMs) направи револуција во областа на обработка на природни јазици (NLP) и вештачка интелигенција (AI). Меѓутоа, како што се зголемува сложеноста и обемот на системите засновани на LLM, така се зголемува и потребата за робусни и ефикасни алатки за оркестрација и автоматизација. Во оваа статија, ќе истражуваме во светот на DSPy и LangChain, две моќни рамки кои овозможуваат градење на еластични и скалабилни софтверски системи во ерата на вештачката интелигенција.
Предизвикот на големите LLM цевководи
Големите LLM цевководи вклучуваат повеќе компоненти, вклучувајќи претходна обработка на податоци, обука за модели и заклучоци. Овие цевководи можат да бидат сложени, со многу зависности и интеракции помеѓу различни компоненти. Како што се зголемува обемот на овие гасоводи, така се зголемува и ризикот од грешки, одложувања и тесни грла во ресурсите.
Внесете ги DSPy и LangChain
DSPy и LangChain се две рамки кои имаат за цел да ја поедностават оркестрацијата и автоматизацијата на големите LLM цевководи. DSPy е рамка заснована на Python која обезбедува едноставен и ефикасен начин за градење и управување со сложени цевководи за податоци, додека LangChain е рамка која овозможува градење на скалабилни и еластични системи за вештачка интелигенција.
DSPy: Рамка заснована на Python за цевководи за податоци
DSPy е рамка заснована на Python која обезбедува едноставен и ефикасен начин за изградба и управување со сложени цевководи за податоци. Со DSPy, програмерите можат да креираат цевководи за податоци кои се скалабилни, еластични и лесни за одржување.
Еве пример за едноставен цевковод за податоци изграден со DSPy:
увезете dspy како dsp
извор на податоци = dsp.Извор (
име = "мој_извор_податоци",
тип = "csv",
path="/path/to/data.csv"
)
# Дефинирајте процесор на податоци
data_processor = dsp.Processor(
име = "мој_процесор_податоци",
тип "панди",
func=lambda x: x.dropna()
)
# Дефинирајте мијалник за податоци
data_sink = dsp.Sink(
име = "мои_податоци_мијалник",
тип = "csv",
path="/path/to/output.csv"
)
# Создадете цевковод за податоци
цевковод = dsp.Pipeline(
име = "мој_цевковод",
извори=[извор_податоци],
процесори=[процесор_податоци],
sinks=[податоци_потока]
)
# Стартувај го гасоводот
pipeline.run()
Во овој пример, дефинираме извор на податоци, процесор на податоци и мијалник за податоци, а потоа креираме цевковод за податоци што ги поврзува овие компоненти. Нафтоводот потоа се извршува со помош на методот run().
LangChain: Рамка за скалабилни и еластични системи со вештачка интелигенција
LangChain е рамка која овозможува изградба на скалабилни и еластични системи за вештачка интелигенција. Со LangChain, програмерите можат да создадат системи за вештачка интелигенција кои се лесни за одржување, скалабилни и отпорни на неуспеси.
Еве пример за едноставен AI систем изграден со LangChain:
увоз langchain како lc
# Дефинирајте модел
модел = lc.Model(
име = "мој_модел",
тип "трансформатор",
пат = "/пат/до/модел"
)
# Дефинирајте потсетник
prompt = lc.Prompt(
име = "мој_промпт",
text="Ова е примерок промпт"
)
# Создадете систем за вештачка интелигенција
ai_system = lc.AISystem(
име = "my_ai_system",
модел=модел,
промпт=промпт
)
# Стартувај го системот за вештачка интелигенција
ai_system.run()
Во овој пример, ние дефинираме модел, промпт, а потоа креираме систем за вештачка интелигенција што ги поврзува овие компоненти. Системот за вештачка интелигенција потоа се извршува со помош на методот run().
** Оркестрирање на LLM цевководи од големи размери со DSPy и LangChain**
За да организираме големи LLM цевководи со DSPy и LangChain, можеме да го користиме следниов пристап:
- Дефинирајте цевковод за податоци користејќи DSPy што поврзува повеќе извори на податоци, процесори и мијалници.
- Дефинирајте систем за вештачка интелигенција користејќи LangChain кој поврзува повеќе модели, потсетници и излези.
- Користете DSPy за управување со цевководот за податоци и LangChain за управување со системот за вештачка интелигенција.
- Користете распоредувач како Apache Airflow или Kubernetes за да го закажете извршувањето на цевководот за податоци и системот за вештачка интелигенција.
Еве пример за едноставна скрипта за оркестрација која користи DSPy и LangChain:
увезете dspy како dsp
увоз langchain како lc
увезете apache_airflow како af
# Дефинирајте линија за податоци
data_pipeline = dsp.Pipeline(
име = "мои_податоци_цевковод",
sources=[dsp.Source(име = "мои_податоци_извор", тип "csv", патека = "/path/to/data.csv")],
процесори=[dsp.Процесор(име = "мои_податоци_процесор", тип "панди", func=lambda x: x.dropna())],
sinks=[dsp.Sink(name="my_data_sink", type="csv", path="/path/to/output.csv")]
)
# Дефинирајте систем за вештачка интелигенција
ai_system = lc.AISystem(
име = "my_ai_system",
model=lc.Model(име = "мој_модел", тип "трансформатор", патека = "/пат/до/модел"),
prompt=lc.Prompt(name = "my_prompt", text="Ова е примерок за барање")
)
# Закажете го извршувањето на цевководот за податоци и системот за вештачка интелигенција
af.schedule_task(
task_id = "моја_задача",
dag_id = "мојата_даг",
гасоводот=податоци_цевковод,
систем=ai_system
)
Во овој пример, дефинираме цевковод за податоци и систем за вештачка интелигенција користејќи DSPy и LangChain, а потоа закажуваме извршување на овие компоненти користејќи Apache Airflow.
** Топ 5-10 најкористени команди/парчиња**
Еве ги првите 5-10 најкористени команди/парчиња за DSPy и LangChain:
- `dsp.Pipeline(име = "my_pipeline", извори=[извор], процесори=[процесор], мијалници=[потоне]"
lc.Model(name="my_model", type="transformer", path="/path/to/model")lc.Prompt(name="my_prompt", text="Ова е примерок промпт")dsp.Source(name="my_data_source", type="csv", path="/path/to/data.csv")dsp.Processor(name="my_data_processor", type="pandas", func=lambda x: x.dropna())dsp.Sink(name="my_data_sink", type="csv", path="/path/to/output.csv")- `lc.AISystem(име = "my_ai_system", model=model, prompt=prompt)"
af.schedule_task(task_id="my_task", dag_id="my_dag", pipeline=pipeline, system=system)dsp.run_pipeline(pipeline)lc.run_system(system)
Визуелизација
Еве визуелизација на рамки DSPy и LangChain користејќи Chart.js:
{
"тип": "бар",
"податоци": {
"етикети": ["DSPy", "LangChain"],
"збирки на податоци": [
{
"етикета": "Карактеристики",
"податоци": [10, 15],
"Боја на позадина": [
"rgba(255, 99, 132, 0.2)",
"rgba(54, 162, 235, 0.2)"
],
"borderColor": [
"rgba(255, 99, 132, 1)",
"rgba(54, 162, 235, 1)"
],
„Ширина на границата“: 1
}
]
},
"опции": {}
}
Оваа визуелизација го прикажува бројот на функции во DSPy и LangChain.
Заклучок
Како заклучок, DSPy и LangChain се две моќни рамки кои овозможуваат изградба на еластични и скалабилни софтверски системи во ерата на вештачката интелигенција. Со користење на овие рамки, програмерите можат да создадат големи LLM цевководи кои се лесни за одржување, скалабилни и отпорни на дефекти. Со помош на алатки за оркестрација и автоматизација, како што се Apache Airflow и Kubernetes, програмерите можат да го закажат извршувањето на овие цевководи и системи, што ќе го олесни управувањето со сложените системи со вештачка интелигенција.
Идна работа
Идната работа вклучува:
- Развивање на повеќе функции за DSPy и LangChain.
- Подобрување на перформансите и приспособливоста на DSPy и LangChain.
- Развивање на повеќе алатки за оркестрација и автоматизација за DSPy и LangChain.
- Создавање повеќе визуелизации и контролни табли за DSPy и LangChain.
**Референци **
- DSPy документација: https://dspy.readthedocs.io/en/latest/
- LangChain документација: https://langchain.readthedocs.io/en/latest/
- Документација Apache Airflow: https://airflow.apache.org/docs/apache-airflow/stable/index.html
- Кубернетес документација: https://kubernetes.io/docs/home/