שיתוף | מודל שפה חדש בעברית מבית דיקטה
-
דיקטה שחררו מודל שפה בעברית בעל 7B פרמטרים, בינתיים בגרסה ראשונית. שמו של המודל: dictaLM. המודל שוחרר כקוד פתוח תחת רישיון cc 4.0.
מדובר במודל ג'נרטיבי ראשון שמשוחרר בקוד פתוח.הנה קישור לנייר הלבן בarxiv.
והנה כרטיס המודל בhuggingface.הוא שוחרר בשני גרסאות, בסיסית ומונחית פקודות, האחרונה יכולה לנהל שיח בסגנון צ'אט.
בנוסף שוחרר מודל ג'נרטיבי תורני בשם dictaLM-rab. המודל אומן על 50% עברית מודרנית ו50% עברית תורנית ממקורות שונים. למודל זה לא קיימת גרסת צ'אט.כרגע לא קיים ממשק נוח לשימוש במודל זה, וניתן לבחון אותו רק באמצעות כתיבת קוד כפי הדוגמאות בכרטיס המודל בhuggingface.
עדכון: ניתן להריץ דוגמא כאן.
ובהקשר זה נציין שאין כרגע גירסה מוקטנת (כגון GPTQ או 4bit) כך שזה לא יהיה אפשרי להריץ אותו על המחשב הביתי, לפחות בינתיים. אם יהיו לי עדכונים, אעדכן. -
@שמואל5 כתב בשיתוף | מודל שפה חדש בעברית מבית דיקטה:
@sivan22 איך משתמשים בו?
מריצים את הקוד הבא בcolab או שירות מקביל עם GPU של לפחות 16 ג'יגה (החינמי בcolab מספיק!!)
קישור למחברת עם הקוד.
! pip install git+https://github.com/huggingface/accelerate ! pip install -i https://test.pypi.org/simple/ bitsandbytes ! pip install transformers ! pip install torch import torch from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig quantization_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_compute_dtype=torch.float16, bnb_4bit_use_double_quant=True ) tokenizer = AutoTokenizer.from_pretrained("dicta-il/dictalm-7b-instruct",trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained("dicta-il/dictalm-7b-instruct", quantization_config=quantization_config, trust_remote_code=True) input_text = "תן לי מתכון לעוגת גבינה" inputs = tokenizer(input_text, return_tensors="pt") with torch.backends.cuda.sdp_kernel(enable_flash=True, enable_math=False, enable_mem_efficient=False): outputs = model.generate(**inputs, max_new_tokens=100) print(tokenizer.decode(outputs[0], skip_special_tokens=True))
-
ERROR: You must give at least one requirement to install (see "pip help install") --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-1-105d6d6319da> in <cell line: 6>() 4 import torch 5 ----> 6 from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig 7 8 quantization_config = BitsAndBytesConfig( ModuleNotFoundError: No module named 'transformers' --------------------------------------------------------------------------- NOTE: If your import is failing due to a missing package, you can manually install dependencies using either !pip or !apt. To view examples of installing some common dependencies, click the "Open Examples" button below. ---------------------------------------------------------------------------
נראה שיש בעיה בייבוא המודול השני
https://colab.research.google.com/drive/1loqK6DSJHn08KSthrJQKm0J8viDfukKw?usp=sharing -
@האדם-החושב עדכנתי פוסט, תבדוק שוב (אני מריץ על kaggle כי colab חסום בנטפרי)
-
LocalTokenNotFoundError Traceback (most recent call last) <ipython-input-7-8a60ba73216a> in <cell line: 15>() 13 ) 14 ---> 15 tokenizer = AutoTokenizer.from_pretrained("dicta-il/dictalm-7b-instruct",use_auth_token=True,trust_remote_code=True) 16 model = AutoModelForCausalLM.from_pretrained("dicta-il/dictalm-7b-instruct", quantization_config=quantization_config, use_auth_token=True,trust_remote_code=True) 17 7 frames /usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_headers.py in get_token_to_send(token) 151 if token is True: 152 if cached_token is None: --> 153 raise LocalTokenNotFoundError( 154 "Token is required (`token=True`), but no token found. You" 155 " need to provide a token or be logged in to Hugging Face with" LocalTokenNotFoundError: Token is required (`token=True`), but no token found. You need to provide a token or be logged in to Hugging Face with `huggingface-cli login` or `huggingface_hub.login`. See https://huggingface.co/settings/tokens.
-
@האדם-החושב עדכנתי שוב
-
@sivan22 והנה המתכון המיוחל לעוגת הגבינה
הנה מתכון בסיסי לעוגת גבינה: 2 כוסות קמח לכל מטרה 1 כוס סוכר מגורען 1 כפית אבקת אפייה 1 כפית סודה לשתייה 1 כפית מלח כשר לציפוי מערבבים קמח, סוכר, אבקת אפייה, סודה לשתייה ומלח. מערבבים עד לקבלת תערובת אחידה. משמנים תבנית אפייה ומניחים בצד. מערבבים בקערה גדולה קמח, סוכר, אבקת אפייה ומלח. מוסיפים שמן, מלח, אבקת אפייה, סודה לשתייה ומלח ומערבבים עד לקבלת תערובת אחידה. יוצקים את הבלילה לתבנית אפייה מרובעת בגודל 8"x8" משומנת
רגע, איפה הגבינה!
-
עדכון:
הכנתי ממשק משתמש נחמד, שניתן להריץ על google colab או בשירות דומה.
(החינמי לא מספיק, צריך שדרוג!!)אמור להיראות כך:
יש לרשום בתא הראשון:
!pip install streamlit streamlit-chat ! pip install git+https://github.com/huggingface/accelerate ! pip install -i https://test.pypi.org/simple/ bitsandbytes ! pip install --upgrade transformers torch tensorflow tensorboard
בתא השני יש לרשום:
%%writefile my_app.py import argparse import re import os import streamlit as st from streamlit_chat import message import random import numpy as np import torch from transformers import AutoTokenizer, AutoModelForCausalLM import tokenizers random.seed(None) @st.cache_resource def load_model(model_name): tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True, load_in_4bit=True, use_flash_attention=True) return model, tokenizer def extend(input_text, max_size=20, top_k=50, top_p=0.95,temperature=0.75): if len(input_text) == 0: input_text = "" with torch.inference_mode(): kwargs = dict( inputs=tokenizer(input_text, return_tensors='pt').input_ids.to(model.device), do_sample=True, top_k=top_k, top_p=top_p, temperature=temperature, max_length=max_size, min_new_tokens=5 ) answer= (tokenizer.batch_decode(model.generate(**kwargs), skip_special_tokens=True)) return answer st.title("dictaLM") pre_model_path = "dicta-il/dictalm-7b-instruct" model, tokenizer = load_model(pre_model_path) np.random.seed(None) random_seed = np.random.randint(10000,size=1) device = torch.device("cuda" if torch.cuda.is_available() else "cpu") n_gpu = 0 if torch.cuda.is_available()==False else torch.cuda.device_count() torch.manual_seed(random_seed) if n_gpu > 0: torch.cuda.manual_seed_all(random_seed) st.sidebar.subheader("Configurable parameters") max_len = st.sidebar.slider("Max-Length", 0, 192, 96,help="The maximum length of the sequence to be generated.") top_k = st.sidebar.slider("Top-K", 0, 100, 40, help="The number of highest probability vocabulary tokens to keep for top-k-filtering.") top_p = st.sidebar.slider("Top-P", 0.0, 1.0, 0.92, help="If set to float < 1, only the most probable tokens with probabilities that add up to top_p or higher are kept for generation.") temperature = st.sidebar.slider("Temperature", 0.0, 1.0, 0.75, help="TO COME") def on_input_change(): user_input = st.session_state.user_input result = extend(input_text=user_input, top_k=int(top_k), top_p=float(top_p), max_size=int(max_len), temperature=float(temperature) ) print(result) chat_placeholder = st.empty() with chat_placeholder.container(): message(user_input, is_user=True) message(result[0]) def on_btn_click(): del st.session_state.past[:] del st.session_state.generated[:] st.session_state.setdefault( 'past', [] ) st.session_state.setdefault( 'generated', [] ) st.markdown( """hebrew chat based on dictaLM""" ) with st.container(): st.text_input("User Input:", on_change=on_input_change, key="user_input") st.button("Clear message", on_click=on_btn_click)
בתא השלישי לרשום :
!curl ipv4.icanhazip.com
בתא הרביעי לרשום:
!npm install localtunnel !streamlit run app.py &>/content/logs.txt & !npx localtunnel --port 8501
אז יש ללחוץ על כתובת הURL.
להעתיק את כתובת הIP מהשורה הקודמת.
להמתין עד שמופיעה ההודעה כי המודל נטען בשלמות.
-
@Ykingsmart כתב בשיתוף | מודל שפה חדש בעברית מבית דיקטה:
@sivan22 אוף, אתם מדברים גבוה מידי בשביל פשוטי עם כמוני.
לכן פרסמתי את הפוסט דווקא במתמחים טופ ולא בפורום אחר.
בכל אופן קצת רקע כללי תוכל לקרוא כאן.