Laajamittaisten LLM-putkien järjestäminen DSPy:n ja LangChainin avulla kehitystyön parantamiseksi | B4N1

Laajamittaisten LLM-putkien järjestäminen DSPy:n ja LangChainin avulla kehitystyön parantamiseksi

3 months ago · b4n1 Read time: 3 min

Suureiden LLM-putkien organisointi DSPy:n ja LangChainin avulla kehitystyön parantamiseksi

Esittely

Suurten kielimallien (LLM) tulo on mullistanut luonnollisen kielen käsittelyn (NLP) ja tekoälyn (AI). LLM-pohjaisten järjestelmien monimutkaisuuden ja laajuuden kasvaessa kuitenkin tarve vankille ja tehokkaille orkestrointi- ja automaatiotyökaluille kasvaa. Tässä artikkelissa perehdymme DSPyn ja LangChainin maailmaan, kahteen tehokkaaseen kehykseen, jotka mahdollistavat joustavien ja skaalautuvien ohjelmistojärjestelmien rakentamisen tekoälyn aikakaudella.

Laajamaisten LLM-putkien haaste

Laajamittainen LLM-putkistot sisältävät useita komponentteja, mukaan lukien tietojen esikäsittely, mallin koulutus ja päättely. Nämä putkistot voivat olla monimutkaisia, ja niissä voi olla monia riippuvuuksia ja vuorovaikutuksia eri komponenttien välillä. Kun näiden putkien laajuus kasvaa, myös virheiden, viiveiden ja resurssien pullonkaulojen riski kasvaa.

Syötä DSPy ja LangChain

DSPy ja LangChain ovat kaksi kehystä, joiden tarkoituksena on yksinkertaistaa suurten LLM-putkien organisointia ja automatisointia. DSPy on Python-pohjainen kehys, joka tarjoaa yksinkertaisen ja tehokkaan tavan rakentaa ja hallita monimutkaisia ​​tietoputkia, kun taas LangChain on kehys, joka mahdollistaa skaalautuvien ja joustavien tekoälyjärjestelmien rakentamisen.

DSPy: Python-pohjainen kehys tietoputkille

DSPy on Python-pohjainen kehys, joka tarjoaa yksinkertaisen ja tehokkaan tavan rakentaa ja hallita monimutkaisia tietoputkia. DSPy:n avulla kehittäjät voivat luoda tietoputkia, jotka ovat skaalautuvia, kestäviä ja helppoja ylläpitää.

Tässä on esimerkki yksinkertaisesta dataputkesta, joka on rakennettu DSPyllä:

tuo dspy nimellä dsp


data_source = dsp.Source(
    name="my_data_source",
    type="csv",
    path="/path/to/data.csv"
)

# Määritä tietojen käsittelijä
data_processor = dsp.Processor(
    name="my_data_processor",
    type="pandas",
    func=lambda x: x.dropna()
)

# Määrittele datanielu
data_sink = dsp.Sink(
    name="my_data_sink",
    type="csv",
    path="/path/to/output.csv"
)

# Luo dataputki
pipeline = dsp.Pipeline(
    name="my_pipeline",
    sources=[data_source],
    prosessorit = [tietojen_prosessori],
    nielut=[data_sink]
)

# Suorita putki
pipeline.run()

Tässä esimerkissä määritämme tietolähteen, tietojenkäsittelylaitteen ja tietonielun ja luomme sitten tietoputken, joka yhdistää nämä komponentit. Liukuhihna ajetaan sitten käyttämällä "run()"-menetelmää.

LangChain: kehys skaalautuville ja joustaville tekoälyjärjestelmille

LangChain on kehys, joka mahdollistaa skaalautuvien ja joustavien tekoälyjärjestelmien rakentamisen. LangChainin avulla kehittäjät voivat luoda tekoälyjärjestelmiä, jotka ovat helposti ylläpidettäviä, skaalautuvia ja kestäviä vikoja vastaan.

Tässä on esimerkki yksinkertaisesta AI-järjestelmästä, joka on rakennettu LangChainilla:

tuo langchain lc:nä

# Määrittele malli
model = lc.Model(
    name="oma_malli",
    type="muuntaja",
    polku="/polku/malliin"
)

# Määrittele kehote
prompt = lc.Prompt(
    name="my_prompt",
    text="Tämä on esimerkkikehote"
)

# Luo tekoälyjärjestelmä
ai_system = lc.AISystem(
    name="my_ai_system",
    malli = malli,
    kehote = kehote
)

# Suorita AI-järjestelmä
ai_system.run()

Tässä esimerkissä määrittelemme mallin, kehotteen ja luomme sitten tekoälyjärjestelmän, joka yhdistää nämä komponentit. AI-järjestelmä ajetaan sitten käyttämällä "run()"-menetelmää.

Suuren mittakaavan LLM-putkilinjojen järjestäminen DSPyllä ja LangChainilla

Suuren mittakaavan LLM-putkistojen järjestämiseksi DSPy:n ja LangChainin avulla voimme käyttää seuraavaa lähestymistapaa:

  1. Määritä tietoputki DSPy:n avulla, joka yhdistää useita tietolähteitä, prosessoreita ja nieluja.
  2. Määritä AI-järjestelmä LangChainilla, joka yhdistää useita malleja, kehotteita ja lähtöjä.
  3. Käytä DSPy:tä dataputken hallintaan ja LangChainia tekoälyjärjestelmän hallintaan.
  4. Käytä ajastinta, kuten Apache Airflow tai Kubernetes, ajoittaaksesi dataputken ja tekoälyjärjestelmän suorittamisen.

Tässä on esimerkki yksinkertaisesta orkestrointikomentosarjasta, joka käyttää DSPy:tä ja LangChainia:

tuo dspy nimellä dsp
tuo langchain lc:nä
tuonti apache_airflow muodossa af

# Määritä dataputki
data_pipeline = dsp.Pipeline(
    name="my_data_pipeline",
    sources=[dsp.Source(nimi="oma_data_lähde", tyyppi="csv", polku="/polku/data.csv")],
    prosessorit=[dsp.Processor(name="my_data_processor", type="pandas", func=lambda x: x.dropna())],
    sinks=[dsp.Sink(name="my_data_sink", type="csv", polku="/path/to/output.csv")]
)

# Määritä AI-järjestelmä
ai_system = lc.AISystem(
    name="my_ai_system",
    model=lc.Model(nimi="oma_malli", tyyppi="muuntaja", polku="/polku/malliin"),
    prompt=lc.Prompt(name="my_prompt", text="Tämä on esimerkkikehote")
)

# Ajoita dataputken ja AI-järjestelmän suorittaminen
af.schedule_task(
    task_id="oma_tehtävä",
    dag_id="oma_päivä",
    pipeline=data_pipeline,
    system=ai_system
)

Tässä esimerkissä määritämme dataputken ja tekoälyjärjestelmän DSPy:n ja LangChainin avulla ja ajoitamme sitten näiden komponenttien suorittamisen Apache Airflow:n avulla.

5–10 eniten käytettyä komentoa/katkelmaa

Tässä on 5–10 eniten käytettyä komentoa/katkelmaa DSPylle ja LangChainille:

  1. dsp.Pipeline(name="my_pipeline", sources=[lähde], prosessorit=[prosessori], nielut=[sink])
  2. `lc.Model(nimi="oma_malli", tyyppi="muuntaja", polku="/polku/malliin")'
  3. lc.Prompt(name="my_prompt", text="Tämä on esimerkkikehote")
  4. dsp.Source(name="my_data_source", type="csv", polku="/polku/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", polku="/path/to/output.csv")
  7. `lc.AISystem(name="my_ai_system", malli=malli, kehote=kehote)'
  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)".

Visualisointi

Tässä on visualisointi DSPy- ja LangChain-kehyksestä Chart.js:n avulla:

{
  "tyyppi": "palkki",
  "data": {
    "labels": ["DSPy", "LangChain"],
    "tietojoukot": [
      {
        "label": "Ominaisuudet",
        "data": [10, 15],
        "taustaväri": [
          "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
      }
    ]
  },
  "vaihtoehdot": {}
}

Tämä visualisointi näyttää DSPy:n ja LangChainin ominaisuuksien määrän.

Johtopäätös

Yhteenvetona voidaan todeta, että DSPy ja LangChain ovat kaksi tehokasta kehystä, jotka mahdollistavat joustavien ja skaalautuvien ohjelmistojärjestelmien rakentamisen tekoälyn aikakaudella. Näitä kehyksiä käyttämällä kehittäjät voivat luoda laajamittaisia ​​LLM-putkistoja, jotka ovat helppoja ylläpitää, skaalautuvia ja kestäviä virheitä vastaan. Orkesteri- ja automaatiotyökalujen, kuten Apache Airflow ja Kubernetes, avulla kehittäjät voivat ajoittaa näiden putkien ja järjestelmien suorittamisen, mikä helpottaa monimutkaisten tekoälyjärjestelmien hallintaa.

Tuleva työ

Tulevaisuuden työhön kuuluu:

  1. Lisää ominaisuuksia DSPylle ja LangChainille.
  2. DSPy:n ja LangChainin suorituskyvyn ja skaalautuvuuden parantaminen.
  3. Uusien orkestrointi- ja automaatiotyökalujen kehittäminen DSPylle ja LangChainille.
  4. Luodaan lisää visualisointeja ja kojetauluja DSPylle ja LangChainille.

Referenssit

  1. DSPy-dokumentaatio: https://dspy.readthedocs.io/en/latest/
  2. LangChain-dokumentaatio: https://langchain.readthedocs.io/en/latest/
  3. Apache Airflow -dokumentaatio: https://airflow.apache.org/docs/apache-airflow/stable/index.html
  4. Kubernetes-dokumentaatio: https://kubernetes.io/docs/home/

Have Questions?

Let's Talk

Contact me on LinkedIn