Арганізацыя буйнамаштабных канвеераў LLM з DSPy і LangChain для паляпшэння DevOps | B4N1

Арганізацыя буйнамаштабных канвеераў LLM з DSPy і LangChain для паляпшэння DevOps

3 months ago · b4n1 Read time: 4 min

Аркестрацыя буйнамаштабных канвеераў LLM з DSPy і LangChain для паляпшэння DevOps

Уводзіны

З'яўленне вялікіх моўных мадэляў (LLM) зрабіла рэвалюцыю ў галіне апрацоўкі натуральнай мовы (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(
    name="my_data_processor",
    тып = "панды",
    func=лямбда x: x.dropna()
)

# Вызначце прыёмнік дадзеных
data_sink = dsp.Sink(
    name="my_data_sink",
    тып = "csv",
    шлях="/шлях/да/выхаду.csv"
)

# Стварыце канвеер дадзеных
канвеер = dsp.Pipeline(
    імя = "мой_канвеер",
    крыніцы=[крыніца_дадзеных],
    працэсары = [працэсар_дадзеных],
    sinks=[прыёмнік_дадзеных]
)

# Запусціце канвеер
pipeline.run()

У гэтым прыкладзе мы вызначаем крыніцу даных, працэсар даных і прыёмнік даных, а затым ствараем канвеер даных, які злучае гэтыя кампаненты. Затым канвеер запускаецца метадам run().

LangChain: структура для маштабуемых і ўстойлівых сістэм штучнага інтэлекту

LangChain - гэта структура, якая дазваляе ствараць маштабуемыя і ўстойлівыя сістэмы штучнага інтэлекту. З дапамогай LangChain распрацоўшчыкі могуць ствараць сістэмы штучнага інтэлекту, якія простыя ў абслугоўванні, якія маштабуюцца і ўстойлівыя да збояў.

Вось прыклад простай сістэмы штучнага інтэлекту, створанай з дапамогай LangChain:

імпартаваць langchain як lc

# Вызначэнне мадэлі
мадэль = lc.Model(
    імя = "мая_мадэль",
    тып = "трансформер",
    шлях="/шлях/да/мадэлі"
)

# Вызначце падказку
падказка = lc.Prompt(
    name="my_prompt",
    text="Гэта ўзор падказкі"
)

# Стварыце сістэму штучнага інтэлекту
ai_system = lc.AISystem(
    name="my_ai_system",
    model=мадэль,
    падказаць=падказаць
)

# Запусціце сістэму штучнага інтэлекту
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

# Вызначэнне канвеера дадзеных
канвеер_дадзеных = dsp.Канвеял(
    name="my_data_pipeline",
    крыніцы = [dsp.Source (імя = "мая крыніца_дадзеных", тып = "csv", шлях = "/шлях/да/даных.csv")],
    processors=[dsp.Processor(name="my_data_processor", type="pandas", func=lambda x: x.dropna())],
    sinks=[dsp.Sink(name="my_data_sink", type="csv", path="/path/to/output.csv")]
)

# Вызначце сістэму штучнага інтэлекту
ai_system = lc.AISystem(
    name="my_ai_system",
    model=lc.Model(name="my_model", type="transformer", path="/path/to/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(name="my_pipeline", sources=[крыніца], processors=[processor], sinks=[sink])
  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(name="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(сістэма)

Візуалізацыя

Вось візуалізацыя фрэймворкаў DSPy і LangChain з выкарыстаннем Chart.js:

{
  "тып": "бар",
  "дадзеныя": {
    "labels": ["DSPy", "LangChain"],
    "наборы дадзеных": [
      {
        "label": "Асаблівасці",
        "дадзеныя": [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)"
        ],
        "borderWidth": 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. Дакументацыя Kubernetes: https://kubernetes.io/docs/home/

Have Questions?

Let's Talk

Contact me on LinkedIn