Оркестрирање на LLM цевки од големи размери со DSPy и LangChain за подобрени DevOps | B4N1

Оркестрирање на LLM цевки од големи размери со DSPy и LangChain за подобрени DevOps

3 months ago · b4n1 Read time: 5 min

Оркестрирање на 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, можеме да го користиме следниов пристап:

  1. Дефинирајте цевковод за податоци користејќи DSPy што поврзува повеќе извори на податоци, процесори и мијалници.
  2. Дефинирајте систем за вештачка интелигенција користејќи LangChain кој поврзува повеќе модели, потсетници и излези.
  3. Користете DSPy за управување со цевководот за податоци и LangChain за управување со системот за вештачка интелигенција.
  4. Користете распоредувач како 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:

  1. `dsp.Pipeline(име = "my_pipeline", извори=[извор], процесори=[процесор], мијалници=[потоне]"
  2. lc.Model(name="my_model", type="transformer", path="/path/to/model")
  3. lc.Prompt(name="my_prompt", text="Ова е примерок промпт")
  4. dsp.Source(name="my_data_source", type="csv", path="/path/to/data.csv")
  5. dsp.Processor(name="my_data_processor", type="pandas", func=lambda x: x.dropna())
  6. dsp.Sink(name="my_data_sink", type="csv", path="/path/to/output.csv")
  7. `lc.AISystem(име = "my_ai_system", model=model, prompt=prompt)"
  8. af.schedule_task(task_id="my_task", dag_id="my_dag", pipeline=pipeline, system=system)
  9. dsp.run_pipeline(pipeline)
  10. 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, програмерите можат да го закажат извршувањето на овие цевководи и системи, што ќе го олесни управувањето со сложените системи со вештачка интелигенција.

Идна работа

Идната работа вклучува:

  1. Развивање на повеќе функции за DSPy и LangChain.
  2. Подобрување на перформансите и приспособливоста на DSPy и LangChain.
  3. Развивање на повеќе алатки за оркестрација и автоматизација за DSPy и LangChain.
  4. Создавање повеќе визуелизации и контролни табли за DSPy и LangChain.

**Референци **

  1. DSPy документација: https://dspy.readthedocs.io/en/latest/
  2. LangChain документација: https://langchain.readthedocs.io/en/latest/
  3. Документација Apache Airflow: https://airflow.apache.org/docs/apache-airflow/stable/index.html
  4. Кубернетес документација: https://kubernetes.io/docs/home/

Have Questions?

Let's Talk

Contact me on LinkedIn