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
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
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
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:
- Üretim ve geliştirme için önerilen model sunma uç noktaları .
- Etkileşimli geliştirme için önerilen küme sürücüsü proxy uygulaması.
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_tokens
gibi temperature
önemli parametreleri gerektirir veya önerir. Aşağıdaki örnekte, bu parametrelerin adlı falcon-7b-instruct
dağı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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin