/ Модель

Характеристики

Контекст
514 токенов
Параметры
96,6 млн
Архитектура
roberta · dense
Базовая модель
CodeBERTa-small-v1
Библиотека
sentence-transformers
Опубликована
23 сен 2025

SOCO-Java-codeberta-cmnrl-triplets-ep1-bs16-lr2e-05-split0.0

ЭмбеддингиТекст → embedding6 профессий

Дообученная на Java-коде модель CodeBERTa создаёт эмбеддинги для семантического поиска и сравнения фрагментов кода.

127скачиваний за 30 дней0лайковвеса обновлены23 сен 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Эмбеддинги» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Это модель Sentence Transformers на базе CodeBERTa-small-v1, дообученная buelfhood на примерах Java-кода из набора SOCO_TRAIN_java. Архитектура включает RoBERTa-трансформер с усреднением токенных представлений; модель кодирует входной текст в плотный вектор размерности 768. Максимальная длина последовательности — 512 токенов, сходство векторов можно оценивать косинусной мерой.

Модель предназначена для поиска семантически близких фрагментов кода и сравнения Java-примеров. Её можно применять для семантического поиска по коду, поиска дубликатов и похожих реализаций, кластеризации и извлечения эмбеддингов для последующей классификации. Обучение использовало тройки anchor, positive и negative с CachedMultipleNegativesRankingLoss.

Репозиторий содержит веса в формате safetensors и рассчитан на использование с библиотекой Sentence Transformers. Контекст ограничен 512 токенами; модель обучалась на Java-коде, поэтому качество на других языках программирования и обычном тексте может быть ниже или не оценивалось. Лицензия в предоставленных данных не указана.

Сценарии применения

  • семантический поиск похожих фрагментов Java-кода
  • поиск дубликатов и повторно реализованных методов
  • сравнение семантической близости двух фрагментов кода
  • кластеризация Java-кода по смыслу
  • извлечение эмбеддингов Java-кода для последующей классификации

Ограничения

Модель обучена на Java-коде и имеет максимальную длину входа 512 токенов; качество для других языков программирования и обычного текста не установлено. Лицензия в предоставленных данных не указана.

Для каких профессий подходит6

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

SentenceTransformer based on huggingface/CodeBERTa-small-v1

This is a sentence-transformers model finetuned from huggingface/CodeBERTa-small-v1 on the soco_train_java dataset. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more.

Model Details

Model Description

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': False, 'architecture': 'RobertaModel'})
  (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True})
)

Usage

Direct Usage (Sentence Transformers)

First install the Sentence Transformers library:

pip install -U sentence-transformers

Then you can load this model and run inference.

from sentence_transformers import SentenceTransformer

# Download from the 🤗 Hub
model = SentenceTransformer("buelfhood/SOCO-Java-codeberta-cmnrl-triplets-ep1-bs16-lr2e-05-split0.0")
# Run inference
sentences = [
    'import java.net.*;\nimport java.io.*;\nimport java.*;\n\n public class Dictionary {\n\n   URLConnection conn = null;\n   private static boolean status = false;\n\n   public static void main (String args[]){\n     Dictionary a = new Dictionary();\n     String[] inp = {"http://sec-crack.cs.rmit.edu./SEC/2/index.php",\n     \t\t\t\t "",\n     \t\t\t\t ""};\n     File file = new File("words");\n     exit:\n     try {\n\t\t BufferedReader in = new BufferedReader(new FileReader(file));\n\t\t int attempt = 0;\n\t\t inp[2] = in.readLine();\n\t\t while (inp[2] != null) {\n\t\n\t\t\t if (inp[2].length() <= 3) {\n\t\t\t \tattempt++;\n\t\t\t \ta.doit(inp);\n     \t\t \tif (status) {\n\t\t\t \t\t System.out.println("Crrect password is: " + inp[2]);\n\t\t\t \t\t System.out.println("Number of attempts = " + attempt);\n\t\t\t \t\t break exit;\n\t\t\t \t}\n\t\t \t }\n\t\t\t inp[2] = in.readLine();\n   \t\t}\n\t } catch (FileNotFoundException e1) {\n\t\t \n\t\tSystem.err.println("File not found: " + file);\n\t} catch (IOException e2) {\n\t\t\n\t\te2.printStackTrace();\n\t}\n\n   }\n\n   public void doit(String args[]) {\n     \n     try {\n       BufferedReader in = new BufferedReader(\n           new InputStreamReader\n              (connectURL(new URL(args[0]), args[1], args[2])));\n       String line;\n       while ((line = in.readLine()) != null) {\n           System.out.println(line);\n           status = true;\n           }\n       }\n     catch (IOException e) {\n   \n       }\n     }\n\n   public InputStream connectURL (URL url, String uname, String pword)\n        throws IOException  {\n     conn = url.openConnection();\n     conn.setRequestProperty ("Authorization",\n     userNamePasswordBase64(uname,pword));\n     conn.connect ();\n     return conn.getInputStream();\n     }\n\n   public String userNamePasswordBase64(String username, String password) {\n     return " " + base64Encode (username + ":" + password);\n     }\n\n   private final static char base64Array [] = {\n       \'A\', \'B\', \'C\', \'D\', \'E\', \'F\', \'G\', \'H\',\n       \'I\', \'J\', \'K\', \'L\', \'M\', \'N\', \'O\', \'P\',\n       \'Q\', \'R\', \'S\', \'T\', \'U\', \'V\', \'W\', \'X\',\n       \'Y\', \'Z\', \'a\', \'b\', \'c\', \'d\', \'e\', \'f\',\n       \'g\', \'h\', \'i\', \'j\', \'k\', \'l\', \'m\', \'n\',\n       \'o\', \'p\', \'q\', \'r\', \'s\', \'t\', \'u\', \'v\',\n       \'w\', \'x\', \'y\', \'z\', \'0\', \'1\', \'2\', \'3\',\n       \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'+\', \'/\'\n  };\n\n   private static String base64Encode (String string)    {\n     String encodedString = "";\n     byte bytes [] = string.getBytes ();\n     int i = 0;\n     int pad = 0;\n     while (i < bytes.length) {\n       byte b1 = bytes [i++];\n       byte b2;\n       byte b3;\n       if (i >= bytes.length) {\n          b2 = 0;\n          b3 = 0;\n          pad = 2;\n          }\n       else {\n          b2 = bytes [i++];\n          if (i >= bytes.length) {\n             b3 = 0;\n             pad = 1;\n             }\n          else\n             b3 = bytes [i++];\n          }\n       byte c1 = (byte)(b1 >> 2);\n       byte c2 = (byte)(((b1 & 0x3) << 4) | (b2 >> 4));\n       byte c3 = (byte)(((b2 & 0xf) << 2) | (b3 >> 6));\n       byte c4 = (byte)(b3 & 0x3f);\n       encodedString += base64Array [c1];\n       encodedString += base64Array [c2];\n       switch (pad) {\n        case 0:\n          encodedString += base64Array [c3];\n          encodedString += base64Array [c4];\n          break;\n        case 1:\n          encodedString += base64Array [c3];\n          encodedString += "=";\n          break;\n        case 2:\n          encodedString += "==";\n          break;\n        }\n       }\n       return encodedString;\n   }\n }\n\n',
    'import java.net.*;\nimport java.io.*;\n\n public class Dictionary {\n int attempts = 0;\n   URLConnection conn = null;\n\n   public static void main (String args[]){\n\n\tDictionary a = new Dictionary();\n     a.attack(args);\n     }\n\n   public void attack(String args[]) {\n   try {\n       String login = new String("");\n       String url = new String("http://sec-crack.cs.rmit.edu./SEC/2/index.php");\n       String passwd = new String();\n\n\n       passwd = getPasswd();\n       BufferedReader in = new BufferedReader( new InputStreamReader (openURLForInput(new URL(url), login , passwd)));\n\n       String line;\n       while ((line = in.readLine()) != null) {\n           System.out.println(line);\n           }\n           System.out.println("Password Cracked Successfully!!!");\n           System.out.println("The passsword is :" + passwd + "and got after " +attempts + " tries");\n       }\n     catch (IOException e) {\n  \n      String r = new String(e.getMessage());\n    if ( r != null)\n    {\n     System.out.println("Message :" +r);\n     Dictionary a = new Dictionary();\n     a.attack(args);\n    }\n     else\n     {\n\tSystem.out.println("Trying again");\n\tDictionary a = new Dictionary();\n\ta.attack(args);\n     }\n     }\n   }\n  public String getPasswd()\n  {\n\n int i=0;int j=0;\n attempts++;\n int count =0;\n System.out.println("Passing dictionary word and waiting for URL reply....... ");\n  String currentword = "";\n  String se = "";\n  try{\n FileInputStream reader = new FileInputStream ("words");\n DataInputStream in = new DataInputStream(reader);\n while (in.available() !=0)\n{\n currentword = in.readLine();\n count++;\n \n \n }\n }\n  catch( IOException e){}\n\n  return currentword;\n\t \n         }\n\n\n\n public InputStream openURLForInput (URL url, String uname, String pword)\n throws IOException  {\n     conn = url.openConnection();\n     conn.setDoInput (true);\n     conn.setRequestProperty ("Authorization", userNamePasswordBase64(uname,pword));\n     conn.connect ();\n     return conn.getInputStream();\n     }\n\n\n public String userNamePasswordBase64(String username, String password) {\n     return " " + base64Encode (username + ":" + password);\n     }\n\n private final static char base64Array [] = {\n       \'A\', \'B\', \'C\', \'D\', \'E\', \'F\', \'G\', \'H\',\n       \'I\', \'J\', \'K\', \'L\', \'M\', \'N\', \'O\', \'P\',\n       \'Q\', \'R\', \'S\', \'T\', \'U\', \'V\', \'W\', \'X\',\n       \'Y\', \'Z\', \'a\', \'b\', \'c\', \'d\', \'e\', \'f\',\n       \'g\', \'h\', \'i\', \'j\', \'k\', \'l\', \'m\', \'n\',\n       \'o\', \'p\', \'q\', \'r\', \'s\', \'t\', \'u\', \'v\',\n       \'w\', \'x\', \'y\', \'z\', \'0\', \'1\', \'2\', \'3\',\n       \'4\', \'5\', \'6\', \'7\', \'8\', \'9\', \'+\', \'/\'\n  };\n\n private static String base64Encode (String string)    {\n     String encodedString = "";\n     byte bytes [] = string.getBytes ();\n     int i = 0;\n     int pad = 0;\n     while (i < bytes.length) {\n       byte b1 = bytes [i++];\n       byte b2;\n       byte b3;\n       if (i >= bytes.length) {\n          b2 = 0;\n          b3 = 0;\n          pad = 2;\n          }\n       else {\n          b2 = bytes [i++];\n          if (i >= bytes.length) {\n             b3 = 0;\n             pad = 1;\n             }\n          else\n             b3 = bytes [i++];\n          }\n       byte c1 = (byte)(b1 >> 2);\n       byte c2 = (byte)(((b1 & 0x3) << 4) | (b2 >> 4));\n       byte c3 = (byte)(((b2 & 0xf) << 2) | (b3 >> 6));\n       byte c4 = (byte)(b3 & 0x3f);\n       encodedString += base64Array [c1];\n       encodedString += base64Array [c2];\n       switch (pad) {\n         case 0:\n          encodedString += base64Array [c3];\n          encodedString += base64Array [c4];\n          break;\n         case 1:\n          encodedString += base64Array [c3];\n          encodedString += "=";\n          break;\n         case 2:\n          encodedString += "==";\n          break;\n        }\n       }\n       return encodedString;\n   }\n }\n\n',
    'package java.httputils;\n\nimport java.io.BufferedReader;\nimport java.io.FileNotFoundException;\nimport java.io.FileReader;\nimport java.io.IOException;\nimport java.net.MalformedURLException;\nimport java.sql.Timestamp;\n\n\npublic class Dictionary extends BruteForce\n{\n    protected String wordFile;\n\n    public Dictionary()\n    {\n        super();\n    }\n\n    public static void main(String[] args)\n    {\n        Dictionary dictionary = new Dictionary();\n\n        if (args.length < 3)\n        {\n            System.out.println(dictionary.printUsage());\n        }\n        else\n        {\n            dictionary.setURL(args[0]);\n            dictionary.setUserName(args[1]);\n            dictionary.setWordFile(args[2]);\n\n            if (args.length > 3)\n            {\n                dictionary.setFileName(args[3]);\n            }\n            dictionary.process();\n            System.out.println(dictionary.printResult());\n            System.exit(1);\n        }\n    }\n\n    public void process()\n    {\n        attempts = 0;\n        String password = "";\n        \n        setStart(new Timestamp(System.currentTimeMillis()));\n\n        BufferedReader input = null;\n        try\n        {\n            FileReader file = new FileReader(getWordFile());\n            \n            input = new BufferedReader(file);\n            \n        }\n        catch (FileNotFoundException x)\n        {\n            System.err.println("File not found: " + getWordFile());\n            System.exit(2);\n        }\n\n        try\n        {\n            while ((password = input.readLine()) != null)\n            {\n                try\n                {\n                    \n                    attempts++;\n                    BasicAuthHttpRequest req =\n                        new BasicAuthHttpRequest(\n                            getURL(),\n                            getUserName(),\n                            password);\n                    setPassword(password);\n                    setEnd(new Timestamp(System.currentTimeMillis()));\n                    setContent(req.getContent().toString());\n\n                    \n                    if (getFileName() != null\n                        && getFileName().length() > 0)\n                    {\n                        createReport();\n                    }\n                    return;\n                }\n                catch (MalformedURLException e)\n                {\n                    e.printStackTrace();\n                    return;\n                }\n                catch (IOException e)\n                {\n\n                }\n            }\n        }\n        catch (IOException x)\n        {\n            x.printStackTrace();\n        }\n\n        \n        setEnd(new Timestamp(System.currentTimeMillis()));\n\n    }\n\n    public String printUsage()\n    {\n        StringBuffer s = new StringBuffer();\n\n        s.append("** BruteForce proper usage **\\n\\n");\n        s.append(\n            "java ..httputils.Dictionary <URL> <UserName> <Word File> <OutputFile - Optional>\\n\\n");\n\n        return s.toString();\n    }\n    \n    public String getWordFile()\n    {\n        return wordFile;\n    }\n\n    \n    public void setWordFile(String string)\n    {\n        wordFile = string;\n    }\n\n}\n',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[ 1.0000,  0.8625, -0.2266],
#         [ 0.8625,  1.0000, -0.2449],
#         [-0.2266, -0.2449,  1.0000]])

Training Details

Training Dataset

soco_train_java

  • Dataset: soco_train_java at 44ca4ff
  • Size: 42,960 training samples
  • Columns: anchor_code, positive_code, and negative_code
  • Approximate statistics based on the first 1000 samples:
    anchor_codepositive_codenegative_code
    typestringstringstring
    detailsmin: 512 tokensmean: 512.0 tokensmax: 512 tokensmin: 512 tokensmean: 512.0 tokensmax: 512 tokensmin: 51 tokensmean: 456.08 tokensmax: 512 tokens
  • Samples:
    anchor_codepositive_codenegative_code
    import java.net.;import java.io.;import java.*; public class Dictionary { URLConnection conn = null; private static boolean status = false; public static void main (String args[]){ Dictionary a = new Dictionary(); String[] inp = {"http://sec-crack.cs.rmit.edu./SEC/2/index.php", "", ""}; File file = new File("words"); exit: try { BufferedReader in = new BufferedReader(new FileReader(file)); int attempt = 0; inp[2] = in.readLine(); while (inp[2] != null) { if (inp[2].length() <= 3) { attempt++; a.doit(inp); if (status) { System.out.println("Crrect password is: " + inp[2]); System.out.println("Number of attempts = " + attempt); break exit; } } inp[2] = in.readLine(); } } catch (FileNotFoundException e1) { System.err.println("File not found: " + file); } catch (IOException e2) { e2.printStackTrace(); } } public void doit(String ar...import java.net.;import java.io.; public class Dictionary { int attempts = 0; URLConnection conn = null; public static void main (String args[]){ Dictionary a = new Dictionary(); a.attack(args); } public void attack(String args[]) { try { String login = new String(""); String url = new String("http://sec-crack.cs.rmit.edu./SEC/2/index.php"); String passwd = new String(); passwd = getPasswd(); BufferedReader in = new BufferedReader( new InputStreamReader (openURLForInput(new URL(url), login , passwd))); String line; while ((line = in.readLine()) != null) { System.out.println(line); } System.out.println("Password Cracked Successfully!!!"); System.out.println("The passsword is :" + passwd + "and got after " +attempts + " tries"); } catch (IOException e) { String r = new String(e.getMessage()); if ( r != null) { System.out.println... import java.io.;import java.net.;import java.util.*;import java.misc.BASE64Encoder;public class Dictionary { private String userId; private String password; ReadDictionary myWords = new ReadDictionary(); public Dictionary() { myWords.openFile(); Authenticator.setDefault (new MyAuthenticator()); } public String fetchURL (String urlString) { StringBuffer sb = new StringBuffer(); HttpURLConnection connection; Date startTime, endTime; int responseCode = -1; boolean retry = true; URL url; startTime = new Date(); System.out.println (" time :" + startTime); while (retry == true) { try { url = new URL (urlString); connection = (HttpURLConnection)url.openConnection(); setUserId(""); setPassword("rhk8611"); System.out.println("Attempting get a response : " +connection.getURL() ); responseCode = connection.getResponseCode(); System.out.print(responseCode + " "); if (responseCode == HttpURLCo...
    import java.net.;import java.io.;import java.*; public class Dictionary { URLConnection conn = null; private static boolean status = false; public static void main (String args[]){ Dictionary a = new Dictionary(); String[] inp = {"http://sec-crack.cs.rmit.edu./SEC/2/index.php", "", ""}; File file = new File("words"); exit: try { BufferedReader in = new BufferedReader(new FileReader(file)); int attempt = 0; inp[2] = in.readLine(); while (inp[2] != null) { if (inp[2].length() <= 3) { attempt++; a.doit(inp); if (status) { System.out.println("Crrect password is: " + inp[2]); System.out.println("Number of attempts = " + attempt); break exit; } } inp[2] = in.readLine(); } } catch (FileNotFoundException e1) { System.err.println("File not found: " + file); } catch (IOException e2) { e2.printStackTrace(); } } public void doit(String ar...import java.net.;import java.io.; public class Dictionary { int attempts = 0; URLConnection conn = null; public static void main (String args[]){ Dictionary a = new Dictionary(); a.attack(args); } public void attack(String args[]) { try { String login = new String(""); String url = new String("http://sec-crack.cs.rmit.edu./SEC/2/index.php"); String passwd = new String(); passwd = getPasswd(); BufferedReader in = new BufferedReader( new InputStreamReader (openURLForInput(new URL(url), login , passwd))); String line; while ((line = in.readLine()) != null) { System.out.println(line); } System.out.println("Password Cracked Successfully!!!"); System.out.println("The passsword is :" + passwd + "and got after " +attempts + " tries"); } catch (IOException e) { String r = new String(e.getMessage()); if ( r != null) { System.out.println...public class Base64 { final static String baseTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; public static String encode(byte[] bytes) { String tmp = ""; int i = 0; byte pos; for(i=0; i < (bytes.length - bytes.length%3); i+=3) { pos = (byte) ((bytes[i] >> 2) & 63); tmp = tmp + baseTable.charAt(pos); pos = (byte) (((bytes[i] & 3) << 4) + ((bytes[i+1] >> 4) & 15)); tmp = tmp + baseTable.charAt( pos ); pos = (byte) (((bytes[i+1] & 15) << 2) + ((bytes[i+2] >> 6) & 3)); tmp = tmp + baseTable.charAt(pos); pos = (byte) (((bytes[i+2]) & 63)); tmp = tmp + baseTable.charAt(pos); if(((i+2)%56) == 0) { tmp = tmp + "\r\n"; } } if(bytes.length % 3 != 0) { if(bytes.length % 3 == 2) { pos = (byte) ((bytes[i] >> 2) & 63); tmp = tmp + baseTable.charAt(pos); pos = (byte) (((bytes[i] & 3) << 4) + ((bytes[i+1] >> 4) & 15)); tmp = tmp + baseTable.charAt( pos ); ...
    import java.net.;import java.io.;import java.*; public class Dictionary { URLConnection conn = null; private static boolean status = false; public static void main (String args[]){ Dictionary a = new Dictionary(); String[] inp = {"http://sec-crack.cs.rmit.edu./SEC/2/index.php", "", ""}; File file = new File("words"); exit: try { BufferedReader in = new BufferedReader(new FileReader(file)); int attempt = 0; inp[2] = in.readLine(); while (inp[2] != null) { if (inp[2].length() <= 3) { attempt++; a.doit(inp); if (status) { System.out.println("Crrect password is: " + inp[2]); System.out.println("Number of attempts = " + attempt); break exit; } } inp[2] = in.readLine(); } } catch (FileNotFoundException e1) { System.err.println("File not found: " + file); } catch (IOException e2) { e2.printStackTrace(); } } public void doit(String ar...import java.net.;import java.io.; public class Dictionary { int attempts = 0; URLConnection conn = null; public static void main (String args[]){ Dictionary a = new Dictionary(); a.attack(args); } public void attack(String args[]) { try { String login = new String(""); String url = new String("http://sec-crack.cs.rmit.edu./SEC/2/index.php"); String passwd = new String(); passwd = getPasswd(); BufferedReader in = new BufferedReader( new InputStreamReader (openURLForInput(new URL(url), login , passwd))); String line; while ((line = in.readLine()) != null) { System.out.println(line); } System.out.println("Password Cracked Successfully!!!"); System.out.println("The passsword is :" + passwd + "and got after " +attempts + " tries"); } catch (IOException e) { String r = new String(e.getMessage()); if ( r != null) { System.out.println...import java.net.;import java.io.IOException;import java.util.;import java.io.*;public class Dictionary { static String userName; static URL url; static URLAuthenticator urlAuthenticator; static int noOfAttempts; public Dictionary() { } public static void main (String args[]) { Properties props = System.getProperties(); props.put("http.proxyHost", "bluetongue.cs.rmit.edu.:8080"); System.out.println(props.get("http.proxyHost")); BufferedReader inFile = null; try { if (args.length < 1) { System.out.println ("Usage : java Dictionary /usr/share/lib/dict/words"); System.exit(1); } inFile = new BufferedReader (new FileReader(args[0])); breakPassword(inFile); } catch (FileNotFoundException e) { System.err.println(e.getMessage()); System.exit(1); } catch (IOException e) { ...
  • Loss: CachedMultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim",
        "mini_batch_size": 32,
        "gather_across_devices": false
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • per_device_train_batch_size: 16
  • learning_rate: 2e-05
  • num_train_epochs: 1
  • warmup_ratio: 0.1
  • fp16: True
  • batch_sampler: no_duplicates

All Hyperparameters

  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: no
  • prediction_loss_only: True
  • per_device_train_batch_size: 16
  • per_device_eval_batch_size: 8
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 1
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 2e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1.0
  • num_train_epochs: 1
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.1
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: False
  • fp16: True
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: False
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • parallelism_config: None
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch_fused
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: None
  • hub_always_push: False
  • hub_revision: None
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_inputs_for_metrics: False
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • torchdynamo: None
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: False
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • eval_on_start: False
  • use_liger_kernel: False
  • liger_kernel_config: None
  • eval_use_gather_object: False
  • average_tokens_across_devices: False
  • prompts: None
  • batch_sampler: no_duplicates
  • multi_dataset_batch_sampler: proportional
  • router_mapping: {}
  • learning_rate_mapping: {}

Training Logs

EpochStepTraining Loss
0.03721001.3222
0.07452000.356
0.11173000.3335
0.14904000.3387
0.18625000.3543
0.22356000.3269
0.26077000.359
0.29808000.3235
0.33529000.3414
0.372410000.3136
0.409711000.3383
0.446912000.3404
0.484213000.3213
0.521414000.3062
0.558715000.3117
0.595916000.3173
0.633117000.2937
0.670418000.3183
0.707619000.3113
0.744920000.3118
0.782121000.2884
0.819422000.3084
0.856623000.2807
0.893924000.2743
0.931125000.2816
0.968326000.2871

Framework Versions

  • Python: 3.11.11
  • Sentence Transformers: 5.1.1
  • Transformers: 4.56.2
  • PyTorch: 2.8.0.dev20250319+cu128
  • Accelerate: 1.10.1
  • Datasets: 4.1.1
  • Tokenizers: 0.22.1

Citation

BibTeX

Sentence Transformers

@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084",
}

CachedMultipleNegativesRankingLoss

@misc{gao2021scaling,
    title={Scaling Deep Contrastive Learning Batch Size under Memory Limited Setup},
    author={Luyu Gao and Yunyi Zhang and Jiawei Han and Jamie Callan},
    year={2021},
    eprint={2101.06983},
    archivePrefix={arXiv},
    primaryClass={cs.LG}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · sentence-transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
RobertaModel
Ревизия весов
5f44d4e

0 моделей