togethercomputer/m2-bert-80M-2k-retrieval

togethercomputer
Similitud de oraciones

Un checkpoint de 80M de M2-BERT, preentrenado con una longitud de secuencia de 2048, y ajustado para la recuperación de contexto largo. Consulta el documento Monarch Mixer: Una arquitectura GEMM basada en Sub-Cuadrática Simple y nuestra publicación en el blog sobre recuperación para más detalles de cómo entrenamos este modelo para secuencias largas.

Como usar

Puedes cargar este modelo usando Hugging Face AutoModel:

from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
"togethercomputer/m2-bert-80M-2k-retrieval",
trust_remote_code=True
)

Debes esperar ver un gran mensaje de error sobre parámetros no utilizados para FlashFFTConv. Si deseas cargar el modelo con FlashFFTConv, puedes consultar nuestro GitHub. Este modelo genera embeddings para recuperación. Los embeddings tienen una dimensionalidad de 768:

from transformers import AutoTokenizer, AutoModelForSequenceClassification

max_seq_length = 2048
testing_string = "Every morning, I make a cup of coffee to start my day."
model = AutoModelForSequenceClassification.from_pretrained(
"togethercomputer/m2-bert-80M-2k-retrieval",
trust_remote_code=True
)

tokenizer = AutoTokenizer.from_pretrained(
"bert-base-uncased",
model_max_length=max_seq_length
)
input_ids = tokenizer(
[testing_string],
return_tensors="pt",
padding="max_length",
return_token_type_ids=False,
truncation=True,
max_length=max_seq_length
)

outputs = model(**input_ids)
embeddings = outputs['sentence_embedding']

También puedes obtener embeddings de este modelo usando la API de Together de la siguiente manera (puedes encontrar tu clave API aquí):

import os
import requests

def generate_together_embeddings(text: str, model_api_string: str, api_key: str):
  url = "https://api.together.xyz/api/v1/embeddings"
  headers = {
    "accept": "application/json",
    "content-type": "application/json",
    "Authorization": f"Bearer {api_key}"
  }
  session = requests.Session()
  response = session.post(
    url,
    headers=headers,
    json={
      "input": text,
      "model": model_api_string
    }
  )
  if response.status_code != 200:
    raise ValueError(f"Request failed with status code {response.status_code}: {response.text}")
  return response.json()['data'][0]['embedding']

print(generate_together_embeddings(
  'Hello world',
  'togethercomputer/m2-bert-80M-2k-retrieval',
  os.environ['TOGETHER_API_KEY'])[:10]
)

Funcionalidades

Preentrenado con longitud de secuencia de 2048
Optimizado para recuperación de contexto largo
Genera embeddings con una dimensionalidad de 768

Casos de uso

Recuperación de contexto largo