Aracılığıyla paylaş


LLM geliştirmesi için Azure Databricks üzerinde LangChain

Önemli

Bunlar deneysel özelliklerdir ve API tanımları değişebilir.

Bu makalede, Azure Databricks'te büyük dil modellerinin (LLM) geliştirilmesini ve dağıtımını kolaylaştıran LangChain tümleştirmeleri açıklanmaktadır.

Bu LangChain tümleştirmeleri ile şunları yapabilirsiniz:

  • PySpark DataFrame yükleyicisi ile PySpark DataFrame'den sorunsuz bir şekilde veri yükleyin.
  • Spark DataFrame Aracısı veya Databricks SQL Aracısı ile doğal dil kullanarak verilerinizi etkileşimli olarak sorgular.
  • Azure Databricks hizmet modelinizi LangChain'de büyük bir dil modeli (LLM) olarak sarmalar.

LangChain nedir?

LangChain, büyük dil modellerini (LLM) kullanan uygulamalar oluşturmaya yardımcı olmak için tasarlanmış bir yazılım çerçevesidir. LangChain'in gücü, geniş tümleştirme ve yetenek dizisinde yatmaktadır. API sarmalayıcıları, web kazıma alt sistemleri, kod çözümleme araçları, belge özetleme araçları ve daha fazlasını içerir. Ayrıca openAI, Anthropic, HuggingFace vb. büyük dil modellerini ve çeşitli veri kaynaklarını ve türlerini destekler.

LangChain, LangChain müşterilerinin MLflow'un güçlü araçlarından ve deneme izleme özelliklerinden doğrudan Azure Databricks ortamından yararlanmasını sağlayan deneysel bir MLflow aroması olarak kullanılabilir. LangChain flavor MLflow belgelerine bakın.

Gereksinimler

  • Databricks Runtime 13.3 ML ve üzeri.
  • Databricks, en son güncelleştirmelere sahip olduğunuzdan emin olmak için Pip'in LangChain'in en son sürümünü yüklemesini önerir.
    • %pip install --upgrade langchain

PySpark DataFrame yükleyicisi ile veri yükleme

LangChain'deki PySpark DataFrame yükleyicisi, pyspark DataFrame'den tek bir yöntemle veri yüklemeyi basitleştirir.

from langchain.document_loaders import PySparkDataFrameLoader

loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()

Aşağıdaki not defterinde PySpark DataFrame yükleyicisinin MLflow ile günlüğe kaydedilen ve modelin ile çıkarım için genel bir Python işlevi olarak yorumlanabilmesini sağlayan alma tabanlı bir sohbet botu oluşturmak için mlflow.pyfunc.load_model()kullanıldığı bir örnek gösterilmektedir.

Langchain not defterinde PySpark DataFrame yükleyicisi ve MLflow

Not defterini alma

Spark DataFrame Aracısı

LangChain'deki Spark DataFrame Aracısı, soru yanıtlama için iyileştirilmiş bir Spark DataFrame ile etkileşime olanak tanır. LangChain'in Spark DataFrame Aracısı belgeleri , Spark DataFrame Aracısı'nı bir DataFrame ile oluşturma ve kullanma hakkında ayrıntılı bir örnek sağlar.

from langchain.agents import create_spark_dataframe_agent

df = spark.read.csv("/databricks-datasets/COVID/coronavirusdataset/Region.csv", header=True, inferSchema=True)
display(df)

agent = create_spark_dataframe_agent(llm=OpenAI(temperature=0), df=df, verbose=True)
...

Aşağıdaki not defteri, verilerinizle ilgili içgörüler elde etmenize yardımcı olmak için Spark DataFrame Aracısı'nın nasıl oluşturulacağını ve kullanılacağını gösterir.

Spark DataFrame not defteriyle etkileşime geçmek için LangChain kullanma

Not defterini alma

Databricks SQL Aracısı

Databricks SQL Aracısı, LangChain'in sağladığı standart SQL Veritabanı Aracısı'nın bir çeşididir ve Spark DataFrame Aracısı'nın daha güçlü bir değişkeni olarak kabul edilir.

Databricks SQL Aracısı ile tüm Azure Databricks kullanıcıları Unity Kataloğu'nda belirtilen bir şemayla etkileşime girip verileriyle ilgili içgörüler oluşturabilir.

Önemli

Databricks SQL Aracısı yalnızca tabloları sorgulayabilir ve tablo oluşturmaz.

Aşağıdaki örnekte veritabanı örneği komutu içinde SQLDatabase.from_databricks(catalog="...", schema="...") oluşturulur ve aracı ve gerekli araçlar sırasıyla ve create_sql_agent(llm=llm, toolkit=toolkit, **kwargs)tarafından SQLDatabaseToolkit(db=db, llm=llm) oluşturulur.

from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from langchain import OpenAI

db = SQLDatabase.from_databricks(catalog="samples", schema="nyctaxi")
llm = OpenAI(model_name="gpt-3.5-turbo-instruct", temperature=.7)
toolkit = SQLDatabaseToolkit(db=db, llm=llm)
agent = create_sql_agent(llm=llm, toolkit=toolkit, verbose=True)

agent.run("What is the longest trip distance and how long did it take?")

Not

Ücretsiz abonelik hız sınırına ulaştıysa OpenAI modelleri ücretli abonelik gerektirir.

Aşağıdaki not defteri, veritabanınızdaki verileri daha iyi anlamanıza yardımcı olmak için Databricks SQL Aracısı'nın nasıl oluşturulacağını ve kullanılacağını gösterir.

SQL veritabanı not defteriyle etkileşime geçmek için LangChain kullanma

Not defterini alma

Azure Databricks tarafından sunulan modelleri LLM olarak sarmalama

Azure Databricks'te oluşturduğunuz bir LLM'niz varsa doğrudan OpenAI, HuggingFace veya başka bir LLM sağlayıcısının yerine LangChain'de kullanabilirsiniz.

Bu tümleştirme iki uç nokta türünü destekler:

Model sunma uç noktasını sarmalama

Azure Databricks uç noktalarını LangChain'de LLM olarak sarmalayabilirsiniz. Uç nokta sunan bir modeli LangChain'de LLM olarak sarmalamanız için şunlar gerekir:

  • Uç noktaya hizmet veren bir Azure Databricks modeline dağıtılan kayıtlı bir LLM.
  • CAN UÇ nokta için sorgu izni.

Modeller genellikle veya max_tokensgibi temperature önemli parametreleri gerektirir veya önerir. Aşağıdaki örnekte, bu parametrelerin adlı falcon-7b-instructdağıtılmış bir modelle nasıl girılacağı gösterilmektedir. Ek ayrıntılar, Hizmet veren uç nokta Sarmalama LangChain belgelerinde bulunabilir.

from langchain.llms import Databricks

llm = Databricks(endpoint_name="falcon-7b-instruct", model_kwargs={"temperature": 0.1, "max_tokens": 100})
llm("How are you?")

Küme sürücüsü proxy uygulamasını sarmalama

Bir küme sürücüsü proxy uygulamasını LangChain'de LLM olarak sarmalamanız için şunlar gerekir:

  • "Tek kullanıcı" veya "yalıtım paylaşılmıyor" modunda Azure Databricks etkileşimli kümesine yüklenen bir LLM.
  • JSON girişi/çıkışı ile HTTP POST kullanarak modeli "/" konumunda sunmak için sürücü düğümünde çalışan yerel bir HTTP sunucusu.
  • Uygulama [3000, 8000] arasında bir bağlantı noktası numarası kullanır ve yalnızca yerine sürücü IP adresini veya yalnızca 0.0.0.0'ı localhost dinler.
  • Kümeye EKLENEBILIR izni.

Bir örnek için Küme sürücüsü proxy uygulamasını sarmalama için LangChain belgelerine bakın.