<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: islam al-nashera</title>
    <description>The latest articles on DEV Community by islam al-nashera (@islam_alnashera_19f64a4e).</description>
    <link>https://dev.to/islam_alnashera_19f64a4e</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4219072%2F5b11bb45-8dc9-47a4-9a11-9096e6b10127.png</url>
      <title>DEV Community: islam al-nashera</title>
      <link>https://dev.to/islam_alnashera_19f64a4e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/islam_alnashera_19f64a4e"/>
    <language>en</language>
    <item>
      <title>Arabic-First AI: Why Dialects, Datasets, and Deployment Matter</title>
      <dc:creator>islam al-nashera</dc:creator>
      <pubDate>Sat, 31 Oct 2026 13:39:32 +0000</pubDate>
      <link>https://dev.to/islam_alnashera_19f64a4e/arabic-first-ai-why-dialects-datasets-and-deployment-matter-653</link>
      <guid>https://dev.to/islam_alnashera_19f64a4e/arabic-first-ai-why-dialects-datasets-and-deployment-matter-653</guid>
      <description>&lt;h1&gt;
  
  
  Arabic-First AI: Why Dialects, Datasets, and Deployment Matter
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Companion models:&lt;/strong&gt; &lt;a href="https://huggingface.co/ISLAM-PO/MasryGPT-Chat-1.5B" rel="noopener noreferrer"&gt;MasryGPT-Chat-1.5B&lt;/a&gt; · &lt;a href="https://huggingface.co/ISLAM-PO" rel="noopener noreferrer"&gt;datasets&lt;/a&gt; · &lt;a href="https://aslamalkarywk7.github.io/aslamalkarywk7/" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Arabic is spoken by ~400 million people across 20+ countries, yet most "Arabic" AI is really &lt;strong&gt;Modern Standard Arabic (MSA)&lt;/strong&gt; — the language of news, academia, and religion. Nobody texts in MSA. Egyptians say "ازيك؟", not "كيف حالك؟". Moroccans say "labas", not "كيفك". The gap between the Arabic that models are trained on and the Arabic that people actually speak is one of the largest unaddressed problems in applied NLP.&lt;/p&gt;

&lt;p&gt;This essay argues that &lt;strong&gt;Arabic-first AI&lt;/strong&gt; requires three things: &lt;strong&gt;dialect-aware models&lt;/strong&gt;, &lt;strong&gt;dialect-rich datasets&lt;/strong&gt;, and &lt;strong&gt;deployment paths that fit local infrastructure&lt;/strong&gt;. I write from the perspective of a full-stack developer who has built and shipped both the models and the products around them.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The MSA Trap
&lt;/h2&gt;

&lt;p&gt;Most Arabic LLMs (Qwen, Jais, AceGPT, ALLaM) are trained and evaluated on MSA-heavy corpora. The result:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fluency mismatch.&lt;/strong&gt; A model that scores well on MSA benchmarks sounds stiff and translated to a dialect speaker.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cultural loss.&lt;/strong&gt; Idioms ("عيش وملح"), humor, and register are not MSA. You cannot translate "يا باشا" into a formal register without losing the warmth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User trust.&lt;/strong&gt; A chatbot that replies in MSA to an Egyptian user feels like talking to a bureaucrat, not a person.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my own MasryGPT evaluation, base Qwen scored &lt;strong&gt;4.7/5 MSA fluency&lt;/strong&gt; but only &lt;strong&gt;3.1/5 Egyptian fluency&lt;/strong&gt;. After one epoch of dialect fine-tuning, Egyptian fluency rose to &lt;strong&gt;4.6/5&lt;/strong&gt; — at the cost of a small MSA regression (−10%). That tradeoff is real and worth naming honestly.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Dataset Problem
&lt;/h2&gt;

&lt;p&gt;Dialect data is scarce, noisy, and legally messy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Volume.&lt;/strong&gt; MSA corpora (OSCAR, Arabic Wikipedia, news) are large. Dialect corpora are tiny and fragmented.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality.&lt;/strong&gt; Dialect text on social media is full of typos, code-switching, and transliteration ("3ajibni" instead of "عجبني"). Cleaning it is non-trivial.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provenance.&lt;/strong&gt; Real chat logs (WhatsApp, Facebook) are the gold standard but require anonymization and documented consent. Synthetic generation (lexicon-based) is safer but risks producing "textbook dialect" — a dialect that no one actually speaks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coverage.&lt;/strong&gt; Egypt's Cairo dialect dominates; Upper Egypt (Saidi), Levantine, Gulf, and Maghrebi dialects are even more underrepresented.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What I built to address this:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dataset&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;arab-dialects-20-countries-3m&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Broad dialect coverage across 20 Arab countries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;arabic-history-and-dialects&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Historical + dialectal Arabic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;documents-Egyptian-Arabic&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Egyptian-Arabic document text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;arabic-to-code-8-langs-3m&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Arabic instructions → code in 8 languages&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 3M-row dialect dataset is the backbone; the MasryGPT training set (80k) is a curated subset focused on Cairo speech.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Dialect-Aware Modeling: Lessons from MasryGPT
&lt;/h2&gt;

&lt;p&gt;Key takeaways from fine-tuning &lt;code&gt;Qwen2.5-1.5B-Instruct&lt;/code&gt; on 80k Egyptian examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Small models can learn dialect.&lt;/strong&gt; A 1.5B model reached 4.6/5 human fluency in one epoch. You do not need 70B to sound Egyptian.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QLoRA is enough.&lt;/strong&gt; 18.5M trainable parameters (1.18%) on 4-bit base, trained in 2h13m on free T4s. The barrier to entry is low.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Loss plateaus tell the truth.&lt;/strong&gt; Loss flattened at step 1,500 → the dataset was saturated. More epochs would have memorized, not generalized. This is the most important diagnostic I check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idioms are the hard part.&lt;/strong&gt; Overall fluency was high, but idiom correctness ("عيش وملح") stayed at 40%. Idioms need dedicated, high-quality data — roughly 5k pairs — not more volume.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tradeoffs must be reported.&lt;/strong&gt; MSA fluency dropped 10%. Hiding this would be dishonest and would break downstream users who need both.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. The Arabic-to-Code Frontier
&lt;/h2&gt;

&lt;p&gt;A second, less discussed problem: &lt;strong&gt;Arabic as an instruction language for code generation.&lt;/strong&gt; Most code LLMs are trained on English prompts. An Arabic-speaking developer who thinks in Arabic must mentally translate before prompting — friction that slows adoption.&lt;/p&gt;

&lt;p&gt;My &lt;code&gt;arabic-to-code-8-langs-3m&lt;/code&gt; dataset targets this directly: Arabic instructions mapped to code in 8 programming languages. Combined with a dialect model, this enables a fully Arabic developer experience: think in Masry, get code.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Deployment: Local Realities
&lt;/h2&gt;

&lt;p&gt;Arabic-first AI must run where Arabic speakers are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPU scarcity.&lt;/strong&gt; Many Egyptian teams have no A100s. A 1.5B model in 4-bit (~1.2 GB VRAM) runs on a T4, a laptop, or even a phone via GGUF/Ollama.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency &amp;amp; cost.&lt;/strong&gt; Self-hosting a small model beats paying per-token API fees for high-volume Arabic chatbots.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline &amp;amp; privacy.&lt;/strong&gt; Government, banking, and healthcare use cases in the region often require on-prem deployment. Small models make this feasible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration.&lt;/strong&gt; As a full-stack developer, I wire models into real products: Next.js frontends, Prisma/Postgres backends, LangChain for RAG, vector search for grounding. The model is only 20% of the work; the other 80% is product engineering.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. What's Missing (Honest Gaps)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Evaluation standards.&lt;/strong&gt; There is no widely accepted Arabic-dialect benchmark. My "4.6/5" is a 3-speaker internal review, not an independent benchmark. The field needs shared eval sets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproducibility.&lt;/strong&gt; I have not yet published the 80k training JSONL. Until the dataset, generation script, and filtering rules are released, the numbers are an internal pilot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dialect breadth.&lt;/strong&gt; Cairo dominates my data. Saidi, Levantine, Gulf, and Maghrebi need the same treatment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety &amp;amp; bias.&lt;/strong&gt; Dialect models can amplify regional stereotypes and vulgarity. Filters and red-teaming are underdeveloped for Arabic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. A Call to Action
&lt;/h2&gt;

&lt;p&gt;If you are building Arabic AI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Report dialect fluency separately&lt;/strong&gt; from MSA fluency. Do not let one number hide the other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Publish your datasets&lt;/strong&gt; (or at least their generation recipe). Reproducibility is the bottleneck.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start small.&lt;/strong&gt; A well-fine-tuned 1.5B beats a poorly-prompted 70B for dialect tasks, and it deploys anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build the product, not just the model.&lt;/strong&gt; RAG, validation, UX, and monitoring matter more than the checkpoint.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Arabic-first AI is not a translation problem. It is a &lt;strong&gt;culture problem&lt;/strong&gt;, and culture lives in dialects. The models that win will be the ones that sound like the people they serve.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Author: Islam Al-Nashar — Full-Stack Developer &amp;amp; AI builder. &lt;a href="https://github.com/aslamalkarywk7" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://huggingface.co/ISLAM-PO" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt; · &lt;a href="https://aslamalkarywk7.github.io/aslamalkarywk7/" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>nlp</category>
      <category>machinelearning</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Glitch-Img-1.0: RGBA Image Generation &amp; Editing with Qwen-Image-2.1</title>
      <dc:creator>islam al-nashera</dc:creator>
      <pubDate>Sat, 31 Oct 2026 13:39:27 +0000</pubDate>
      <link>https://dev.to/islam_alnashera_19f64a4e/glitch-img-10-rgba-image-generation-editing-with-qwen-image-21-1075</link>
      <guid>https://dev.to/islam_alnashera_19f64a4e/glitch-img-10-rgba-image-generation-editing-with-qwen-image-21-1075</guid>
      <description>&lt;h1&gt;
  
  
  Glitch-Img-1.0: RGBA Image Generation &amp;amp; Editing with Qwen-Image-2.1
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://huggingface.co/ISLAM-PO/Glitch-Img-1.0" rel="noopener noreferrer"&gt;huggingface.co/ISLAM-PO/Glitch-Img-1.0&lt;/a&gt; · &lt;a href="https://huggingface.co/spaces/ISLAM-PO/image-gen-demo" rel="noopener noreferrer"&gt;image-gen demo Space&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Image generation has moved past "pretty pictures" toward &lt;strong&gt;controllable, editable, transparent assets&lt;/strong&gt;. &lt;strong&gt;Glitch-Img-1.0&lt;/strong&gt; is my re-upload of &lt;code&gt;Qwen/Qwen-Image-2.1&lt;/code&gt; under the name &lt;code&gt;ISLAM-PO/Glitch-Img-1.0&lt;/code&gt;, aimed at making a strong unified text-to-image + editing model easy to discover and use from a single, well-documented repository. All weights and configs are unchanged from the original; only the README and repo IDs were updated, and the model is &lt;strong&gt;Built with Qwen&lt;/strong&gt; under the Qwen Research License (non-commercial).&lt;/p&gt;

&lt;p&gt;This report covers what the model does, its key capabilities, a quick-start, memory tips, and licensing notes.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. What It Is
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Base model:&lt;/strong&gt; &lt;code&gt;Qwen/Qwen-Image-2.1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual generation component:&lt;/strong&gt; ~7B parameters (32 Single-Stream DiT layers)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pipeline tag:&lt;/strong&gt; &lt;code&gt;text-to-image&lt;/code&gt; (diffusers: &lt;code&gt;QwenImage21Pipeline&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;License:&lt;/strong&gt; Qwen Research License Agreement (non-commercial)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modifications in this re-upload:&lt;/strong&gt; README renaming, repo-ID updates, attribution notes. Weights/configs unchanged.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Four headline improvements define the Qwen-Image-2.1 family this build inherits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Compact &amp;amp; efficient&lt;/strong&gt; — mixed-granularity attention + prefix KV-cache reuse for strong quality at low cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native transparency (RGBA)&lt;/strong&gt; — generate regular or transparent images, edit transparent layers, extract subjects from photos — all in one model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Versatile editing&lt;/strong&gt; — up to 10 reference images, local edits via circles/painted annotations/masks, identity preservation for people and products.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Realistic textures &amp;amp; refined aesthetics&lt;/strong&gt; — improved typography, portrait lighting, and fine details.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. Capabilities in Practice
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Text-to-image&lt;/td&gt;
&lt;td&gt;Prompts up to 2048×2048 and beyond; strong text rendering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image editing&lt;/td&gt;
&lt;td&gt;Inpainting-style edits, background swaps, style transfer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RGBA transparency&lt;/td&gt;
&lt;td&gt;Native alpha channel generation with a documented prompt format&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-reference&lt;/td&gt;
&lt;td&gt;Up to 10 reference images for identity/subject consistency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local edits&lt;/td&gt;
&lt;td&gt;Circles, painted annotations, separate masks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aspect ratios&lt;/td&gt;
&lt;td&gt;1:1, 4:3, 3:4, 3:2, 2:3, 16:9, 9:16 presets&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  3. Quick Start
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Install:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;torch&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;2.4.0
pip &lt;span class="nb"&gt;install &lt;/span&gt;transformers&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;5.17
pip &lt;span class="nb"&gt;install &lt;/span&gt;git+https://github.com/huggingface/diffusers
pip &lt;span class="nb"&gt;install &lt;/span&gt;accelerate pillow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Text-to-image:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;diffusers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;QwenImage21Pipeline&lt;/span&gt;

&lt;span class="n"&gt;pipe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;QwenImage21Pipeline&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ISLAM-PO/Glitch-Img-1.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;torch_dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bfloat16&lt;/span&gt;
&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cuda&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;A neon shop sign that reads &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GLITCH IMG 1.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;, rainy night, reflections on wet pavement&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;num_inference_steps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;generator&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Generator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cuda&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;manual_seed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;t2i_example.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Image editing:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;PIL&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;diffusers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;QwenImage21Pipeline&lt;/span&gt;

&lt;span class="n"&gt;pipe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;QwenImage21Pipeline&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ISLAM-PO/Glitch-Img-1.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;torch_dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bfloat16&lt;/span&gt;
&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cuda&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;input_image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Change the background to a sunset beach&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;input_image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;num_inference_steps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;generator&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Generator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cuda&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;manual_seed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;edit_example.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Transparent (RGBA) generation&lt;/strong&gt; — use the recommended prompt format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;This is an RGBA image with transparency. A cute cartoon dragon sticker. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
           &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The image has alpha channel and the background is transparent.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;num_inference_steps&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;generator&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Generator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cuda&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;manual_seed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;transparent_example.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Aspect ratios:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;aspect_ratios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1:1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;4:3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1792&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3:4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1792&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2400&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3:2&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2528&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1696&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2:3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1696&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2528&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;16:9&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2752&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1536&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;9:16&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1536&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2752&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Memory Optimization
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pipe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;QwenImage21Pipeline&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ISLAM-PO/Glitch-Img-1.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;torch_dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bfloat16&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;pipe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;enable_model_cpu_offload&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This offloads model parts to CPU between steps, letting you run on smaller GPUs at the cost of speed.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Where It Fits in My Stack
&lt;/h2&gt;

&lt;p&gt;I use Glitch-Img as the &lt;strong&gt;visual layer&lt;/strong&gt; behind my portfolio and product work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generating marketing assets and transparent stickers/logos for client sites.&lt;/li&gt;
&lt;li&gt;Editing product photos (background swap, identity-preserving edits).&lt;/li&gt;
&lt;li&gt;Producing RGBA assets that drop straight into web UIs without manual masking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It complements &lt;strong&gt;MasryGPT&lt;/strong&gt; (text) as the two halves of an Arabic-first AI product stack: one generates the words, the other the visuals.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Licensing &amp;amp; Attribution
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Licensed under the &lt;strong&gt;Qwen Research License Agreement&lt;/strong&gt; — &lt;strong&gt;non-commercial use only&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Original work © 2026 Hangzhou Tongyi Laboratory Technology Co., Ltd.&lt;/li&gt;
&lt;li&gt;This re-upload is &lt;strong&gt;Built with Qwen&lt;/strong&gt; and based on &lt;code&gt;Qwen/Qwen-Image-2.1&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;For commercial use, request a license at &lt;code&gt;model-business@notice.qwencloud.com&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;See &lt;code&gt;NOTICE&lt;/code&gt; and &lt;code&gt;LICENSE&lt;/code&gt; in the repo for required attribution.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7. Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Model: &lt;a href="https://huggingface.co/ISLAM-PO/Glitch-Img-1.0" rel="noopener noreferrer"&gt;huggingface.co/ISLAM-PO/Glitch-Img-1.0&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demo Space: &lt;a href="https://huggingface.co/spaces/ISLAM-PO/image-gen-demo" rel="noopener noreferrer"&gt;huggingface.co/spaces/ISLAM-PO/image-gen-demo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Original: &lt;a href="https://huggingface.co/Qwen/Qwen-Image-2.1" rel="noopener noreferrer"&gt;huggingface.co/Qwen/Qwen-Image-2.1&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Upstream GitHub: &lt;a href="https://github.com/QwenLM/Qwen-Image-2.1" rel="noopener noreferrer"&gt;QwenLM/Qwen-Image-2.1&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Author: Islam Al-Nashar — Full-Stack Developer &amp;amp; AI builder. &lt;a href="https://github.com/aslamalkarywk7" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://huggingface.co/ISLAM-PO" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt; · &lt;a href="https://aslamalkarywk7.github.io/aslamalkarywk7/" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>MasryGPT-Chat-1.5B: Teaching Qwen2.5 to Speak Egyptian Arabic (Masry)</title>
      <dc:creator>islam al-nashera</dc:creator>
      <pubDate>Sat, 31 Oct 2026 13:27:58 +0000</pubDate>
      <link>https://dev.to/islam_alnashera_19f64a4e/masrygpt-chat-15b-teaching-qwen25-to-speak-egyptian-arabic-masry-dh6</link>
      <guid>https://dev.to/islam_alnashera_19f64a4e/masrygpt-chat-15b-teaching-qwen25-to-speak-egyptian-arabic-masry-dh6</guid>
      <description>&lt;h1&gt;
  
  
  MasryGPT-Chat-1.5B: Teaching Qwen2.5 to Speak Egyptian Arabic (Masry)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://huggingface.co/ISLAM-PO/MasryGPT-Chat-1.5B" rel="noopener noreferrer"&gt;huggingface.co/ISLAM-PO/MasryGPT-Chat-1.5B&lt;/a&gt; · &lt;a href="https://huggingface.co/spaces/ISLAM-PO/masrygpt-gradio-demo" rel="noopener noreferrer"&gt;Gradio demo&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most Arabic LLMs speak &lt;strong&gt;Modern Standard Arabic (MSA)&lt;/strong&gt; — the language of news and textbooks. But 105 million Egyptians speak &lt;strong&gt;Masry&lt;/strong&gt; (العامية المصرية) every day: "ازيك يا باشا؟" not "كيف حالك؟". That gap is cultural, not just linguistic, and it is the reason MasryGPT exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MasryGPT-Chat-1.5B&lt;/strong&gt; is an open-source, instruction-tuned chat model built on &lt;code&gt;Qwen2.5-1.5B-Instruct&lt;/code&gt;, fine-tuned with &lt;strong&gt;QLoRA + Unsloth&lt;/strong&gt; on 80,000 Egyptian-Arabic examples. It is small enough to run on a single T4 GPU (~1.2 GB in 4-bit) or even edge devices, and it is released under Apache 2.0.&lt;/p&gt;

&lt;p&gt;This article is a technical deep-dive: motivation, model details, dataset, training pipeline, loss analysis, evaluation, usage, limitations, and roadmap.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Motivation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MSA vs. Dialect gap.&lt;/strong&gt; Existing Arabic LLMs (Qwen, Jais, AceGPT) optimize for MSA. Egyptian users get stiff, translated-sounding replies. "ازيك" vs "كيف حالك" is the difference between a friend and a textbook.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight deployment.&lt;/strong&gt; 7B models need 14 GB+ VRAM. A 1.5B model runs on mobile, T4, or edge — perfect for Egyptian startups with limited GPU budgets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unsloth efficiency.&lt;/strong&gt; 2× faster fine-tuning on a free Kaggle T4×2, no A100 required.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Model Details
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Attribute&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ISLAM-PO/MasryGPT-Chat-1.5B&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Base model&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Qwen/Qwen2.5-1.5B-Instruct&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architecture&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;Qwen2ForCausalLM&lt;/code&gt; (28 layers, 12 attn heads, 2 KV heads)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hidden / intermediate size&lt;/td&gt;
&lt;td&gt;1536 / 8960&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vocab size&lt;/td&gt;
&lt;td&gt;151,936&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max position embeddings&lt;/td&gt;
&lt;td&gt;32,768 (trained on 2,048)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total parameters&lt;/td&gt;
&lt;td&gt;1,562,179,072&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trainable (LoRA)&lt;/td&gt;
&lt;td&gt;18,464,768 (1.18%)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LoRA config&lt;/td&gt;
&lt;td&gt;&lt;code&gt;r=16, alpha=16, dropout=0, bias=none, targets=[q,k,v,o,gate,up,down]_proj&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Precision&lt;/td&gt;
&lt;td&gt;Trained 4-bit (NF4), released 16-bit (bfloat16), ~2.9 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokenizer&lt;/td&gt;
&lt;td&gt;Qwen2 tokenizer + &lt;code&gt;chat_template.jinja&lt;/code&gt; (qwen-2.5)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;License&lt;/td&gt;
&lt;td&gt;Apache 2.0 (Qwen license applies)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  3. Dataset
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;qwen_egyptian_80k_terms.jsonl&lt;/code&gt; — 80,000 examples.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Source &amp;amp; curation:&lt;/strong&gt; synthetic generation from an Egyptian lexicon + manual vulgarity filtering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Format:&lt;/strong&gt; &lt;code&gt;{"messages": [{"role":"user","content":"..."},{"role":"assistant","content":"مصري..."}]}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preprocessing:&lt;/strong&gt; &lt;code&gt;get_chat_template(tokenizer, chat_template="qwen-2.5")&lt;/code&gt; + &lt;code&gt;tokenizer.apply_chat_template(..., tokenize=False)&lt;/code&gt; → packed &lt;code&gt;text&lt;/code&gt; field.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Distribution:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Greetings &amp;amp; daily chat&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customer service &amp;amp; instructions&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Humor &amp;amp; jokes&lt;/td&gt;
&lt;td&gt;15%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Expressions &amp;amp; idioms&lt;/td&gt;
&lt;td&gt;15%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Culture &amp;amp; food&lt;/td&gt;
&lt;td&gt;15%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"messages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"يعني ايه عيش وملح؟"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
              &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"assistant"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"عيش وملح يعني العشرة والعهد بين الصحاب، اللي كل معاك عيش وملح ميخونكش"&lt;/span&gt;&lt;span class="p"&gt;}]}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Training Pipeline &amp;amp; Deep Loss Analysis
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Pipeline:&lt;/strong&gt; &lt;code&gt;HF Hub → FastLanguageModel (4-bit) → get_peft_model (QLoRA) → SFTTrainer (TRL) → save_pretrained_merged (16-bit) → HF Hub&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hyperparameters (final fast config, Kaggle T4×2):&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Param&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Rationale&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;max_seq_length&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2048&lt;/td&gt;
&lt;td&gt;Captures longer Egyptian rants without OOM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;per_device_train_batch_size&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;Maximized for T4 15 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gradient_accumulation_steps&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Effective batch 32 → 80k/32 = 2,500 steps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;learning_rate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2e-4&lt;/td&gt;
&lt;td&gt;QLoRA standard for 1.5B, cosine decay&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;optim&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;adamw_8bit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;GPU-resident (vs paged → RAM)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;weight_decay&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0.01&lt;/td&gt;
&lt;td&gt;Regularization against overfitting on 80k&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;warmup_steps&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;0.8% of steps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lr_scheduler&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;cosine&lt;/td&gt;
&lt;td&gt;Best for 1 epoch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;packing&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;True&lt;/td&gt;
&lt;td&gt;10× sample/sec on short sentences&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;num_train_epochs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2nd epoch risks memorization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Loss curve (2,500 steps, 2h 13m):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Step 10:    0.091025
Step 100:   0.098729  (initial spike — warmup)
Step 500:   0.082923
Step 1000:  0.081538
Step 1500:  0.077019
Step 2000:  0.074811
Step 2500:  0.074394
Avg: 0.07995   Perplexity exp(0.079) ≈ 1.083
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Convergence:&lt;/strong&gt; smooth 18.7% drop, no divergence. Loss plateaus at 0.074–0.077 after step 1,500 → dataset saturated. More epochs would overfit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Throughput:&lt;/strong&gt; 10.002 samples/sec, 0.313 steps/sec (Unsloth 2× vs vanilla).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU:&lt;/strong&gt; 2.4 GB / 15 GB (GPU0, 93%) + 4.1 GB / 15 GB (GPU1, 51%). Low memory is a &lt;em&gt;feature&lt;/em&gt; of 4-bit + Unsloth, not a bug. CPU at 100% was the tokenization bottleneck.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FLOPs:&lt;/strong&gt; 1.05e17 total ≈ 13.1 TFLOPs/s on T4.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why not 10 GB VRAM?&lt;/strong&gt; A 1.5B 4-bit model weighs ~0.8 GB; even batch 32 adds ~1.5 GB activations. To reach 10 GB you must disable 4-bit (full 16-bit = 3 GB base + 6 GB optimizer) — 3× slower and unnecessary. The current 2–4 GB is optimal.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Evaluation &amp;amp; Benchmarks
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Status note:&lt;/strong&gt; these figures are an &lt;strong&gt;internal pilot&lt;/strong&gt;, not an independently reproduced benchmark. See &lt;code&gt;EVALUATION.md&lt;/code&gt; in the repo for protocol and limitations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Quantitative:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;MasryGPT Chat&lt;/th&gt;
&lt;th&gt;Qwen2.5-1.5B Base&lt;/th&gt;
&lt;th&gt;Gain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Train loss&lt;/td&gt;
&lt;td&gt;0.074&lt;/td&gt;
&lt;td&gt;0.115 (zero-shot)&lt;/td&gt;
&lt;td&gt;−35%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Perplexity (5% test split)&lt;/td&gt;
&lt;td&gt;1.08&lt;/td&gt;
&lt;td&gt;1.22&lt;/td&gt;
&lt;td&gt;−11%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Egyptian fluency (human, 100 prompts, 1–5)&lt;/td&gt;
&lt;td&gt;4.6&lt;/td&gt;
&lt;td&gt;3.1&lt;/td&gt;
&lt;td&gt;+48%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MSA fluency&lt;/td&gt;
&lt;td&gt;4.2&lt;/td&gt;
&lt;td&gt;4.7&lt;/td&gt;
&lt;td&gt;−10% (tradeoff)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Idiom correctness ("عيش وملح")&lt;/td&gt;
&lt;td&gt;40%&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;+100%, still weak&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;ARC-Challenge&lt;/strong&gt; (via &lt;code&gt;lm_eval&lt;/code&gt;, vLLM on H100, greedy, temp 0): &lt;strong&gt;47.7% acc_norm&lt;/strong&gt; (43.69% acc) on 1,172 tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qualitative:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;code&gt;User: ازيك؟&lt;/code&gt; → &lt;code&gt;ازيك يا باشا عامل ايه النهاردة؟&lt;/code&gt; (natural)&lt;/li&gt;
&lt;li&gt;❌ &lt;code&gt;User: يعني ايه عيش وملح؟&lt;/code&gt; → &lt;code&gt;عيش وملس = خبز&lt;/code&gt; (FAIL — needs more idiom data)&lt;/li&gt;
&lt;li&gt;✅ &lt;code&gt;User: احكيلي نكتة&lt;/code&gt; → short joke (needs &lt;code&gt;max_new_tokens=256&lt;/code&gt;, &lt;code&gt;temperature=0.8&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Base Qwen answers in MSA ("كيف حالك؟"); MasryGPT answers "ازيك يا باشا؟" — judged 48% more Egyptian by 3 native speakers.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Usage
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Unsloth (recommended, fast):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;unsloth&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastLanguageModel&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FastLanguageModel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ISLAM-PO/MasryGPT-Chat-1.5B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_seq_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;load_in_4bit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;FastLanguageModel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;for_inference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ازيك يا باشا؟&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;apply_chat_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tokenize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;add_generation_prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;return_dict&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cuda&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;outputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                        &lt;span class="n"&gt;top_p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;do_sample&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;repetition_penalty&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;1.1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;batch_decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;outputs&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input_ids&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:],&lt;/span&gt;
      &lt;span class="n"&gt;skip_special_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Transformers (standard):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoModelForCausalLM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ISLAM-PO/MasryGPT-Chat-1.5B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;device_map&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auto&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;trust_remote_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;tokenizer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AutoTokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ISLAM-PO/MasryGPT-Chat-1.5B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Generation tips:&lt;/strong&gt; &lt;code&gt;temperature 0.7–0.8&lt;/code&gt; for creativity, &lt;code&gt;0.3&lt;/code&gt; for facts; always &lt;code&gt;return_dict=True&lt;/code&gt; to fix the &lt;code&gt;attention_mask&lt;/code&gt; warning; add &lt;code&gt;fix_mistral_regex=True&lt;/code&gt; if you see that warning.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Limitations &amp;amp; Error Analysis
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Idioms still weak&lt;/strong&gt; (40%) — dataset only 15% idioms; needs ~5k real idiom pairs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hallucination&lt;/strong&gt; — may invent Egyptian facts; no RAG.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Short responses&lt;/strong&gt; — trained on packed short text; raise &lt;code&gt;max_new_tokens&lt;/code&gt; and use &lt;code&gt;repetition_penalty&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MSA degradation&lt;/strong&gt; (−10%) — catastrophic forgetting from dialect fine-tuning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No safety filter&lt;/strong&gt; beyond base Qwen.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Failure-mode analysis:&lt;/strong&gt; loss plateau at step 1,500 → dataset saturated. Fix: add 40k diverse real conversations + 1 more epoch at LR 1e-4.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Roadmap
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;v1.1:&lt;/strong&gt; +5k idioms + 10k real chat logs → target 90% idiom accuracy&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;v2.0:&lt;/strong&gt; DPO/RLHF for Egyptian humor alignment&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;v2.5:&lt;/strong&gt; 3B version for better reasoning, keep 1.5B "lite"&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Deployment:&lt;/strong&gt; GGUF + Ollama + ONNX&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9. Citation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight bibtex"&gt;&lt;code&gt;&lt;span class="nc"&gt;@misc&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;masrygpt_chat2026&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;author&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{ISLAM-PO}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;title&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{MasryGPT Chat: Egyptian Dialect Qwen2.5-1.5B-Instruct via QLoRA &amp;amp; Unsloth}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;year&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{2026}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;publisher&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{Hugging Face}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;url&lt;/span&gt;    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{https://huggingface.co/ISLAM-PO/MasryGPT-Chat-1.5B}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;note&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;{80k terms, 2500 steps, loss 0.079}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Contribute:&lt;/strong&gt; found a wrong Masry word? Open an issue with prompt + expected answer. Have anonymized Egyptian chat data (with documented permission)? Propose a separate dataset repo after privacy/provenance review.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Author: Islam Al-Nashar — Full-Stack Developer &amp;amp; AI builder. &lt;a href="https://github.com/aslamalkarywk7" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://huggingface.co/ISLAM-PO" rel="noopener noreferrer"&gt;Hugging Face&lt;/a&gt; · &lt;a href="https://aslamalkarywk7.github.io/aslamalkarywk7/" rel="noopener noreferrer"&gt;Portfolio&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>nlp</category>
      <category>python</category>
    </item>
  </channel>
</rss>
