Zephyrnet Logosu

AWS Bedrock ile Uçtan Uca Üretken Yapay Zeka Modelleri Oluşturma

Tarih:

Giriş

Geçmişte, Üretken Yapay Zeka pazarı ele geçirmişti ve bunun sonucunda artık farklı uygulamalara sahip çeşitli modellerimiz var. Gen AI'nın değerlendirilmesi Transformer mimarisiyle başladı ve bu strateji o zamandan beri diğer alanlarda da benimsendi. Bir örnek verelim. Bildiğimiz gibi kararlı difüzyon alanında şu anda VIT modelini kullanıyoruz. Modeli daha ayrıntılı incelediğinizde iki tür hizmetin mevcut olduğunu göreceksiniz: ücretli hizmetler ve kullanımı ücretsiz olan açık kaynaklı modeller. Ekstra hizmetlere erişmek isteyen kullanıcı OpenAI gibi ücretli hizmetleri kullanabilir ve açık kaynaklı model için Hugging Face'imiz bulunmaktadır.

Modele ulaşabilir ve göreviniz doğrultusunda ilgili modeli servislerden indirebilirsiniz. Ayrıca ücretli versiyonda token modelleri için ilgili hizmete göre ücret alınabileceğini unutmayın. Benzer şekilde AWS, API aracılığıyla LLM modellerine erişime olanak tanıyan AWS Bedrock gibi hizmetler de sağlıyor. Bu blog yazısının sonuna doğru hizmetlerin fiyatlandırmasını tartışalım.

Öğrenme hedefleri

  • Kararlı Yayılma, LLaMA 2 ve Claude Modelleriyle Üretken Yapay Zekayı Anlamak.
  • AWS Bedrock'un Stable Diffusion, LLaMA 2 ve Claude modellerinin özelliklerini ve yeteneklerini keşfetme.
  • AWS Bedrock'u ve fiyatlandırmasını keşfetme.
  • Görüntü oluşturma, metin sentezi ve kod oluşturma gibi çeşitli görevler için bu modellerden nasıl yararlanacağınızı öğrenin.

Bu makale, Veri Bilimi Blogatonu.

İçindekiler

Üretken Yapay Zeka nedir?

Üretken AI, görseller, metin veya kod gibi kullanıcı isteklerine göre yeni içerik oluşturmak için geliştirilen bir yapay zeka (AI) alt kümesidir. Bu modeller büyük miktarda veri üzerinde yüksek düzeyde eğitilmiştir; bu da içerik üretimini veya kullanıcı isteklerine yanıt vermeyi çok daha doğru ve zaman açısından daha az karmaşık hale getirir. Üretken yapay zekanın yaratıcı sanatlar, içerik oluşturma, veri artırma ve problem çözme gibi farklı alanlarda birçok uygulaması vardır.

LLM modelleri ile oluşturduğum bloglarımdan bazılarına başvurabilirsiniz. sohbet robotu (Gemini Pro) ve Gradient AI Cloud'da LLaMA 2 Modellerinin Otomatik İnce Ayarı. Ayrıca Sarılma Yüzü'nü de yarattım ÇİÇEK AÇMAK Chatbot'u geliştirmek için Meta'nın modeli.

GenAI'nin Temel Özellikleri

  • İçerik yaratımı: LLM modelleri, metin, resim veya kod oluşturmak için kullanıcı tarafından girdi olarak sağlanan sorguları kullanarak yeni içerik üretebilir.
  • İnce ayar: Kolayca ince ayar yapabiliriz, bu da LLM modellerinin performansını artırmak ve güçlerini artırmak için modeli farklı parametreler üzerinde eğitebileceğimiz anlamına gelir.
  • Veriye Dayalı Öğrenme: Üretken yapay zeka modelleri, farklı parametrelere sahip büyük veri kümeleri üzerinde eğitilerek, doğru ve anlamlı çıktılar üretmek için verilerden kalıpları ve verilerdeki eğilimleri öğrenmelerine olanak tanır.
  • verim: Üretken yapay zeka modelleri doğru sonuçlar sağlar; bu sayede manuel oluşturma yöntemlerine kıyasla zamandan ve kaynaklardan tasarruf sağlarlar.
  • Çok yönlülük: Bu modeller her alanda kullanışlıdır. Üretken yapay zekanın yaratıcı sanatlar, içerik oluşturma, veri artırma ve problem çözme dahil olmak üzere farklı alanlarda uygulamaları vardır.

AWS Bedrock nedir?

AWS Bedrock, Amazon Web Services (AWS) tarafından sağlanan bir platformdur. AWS çeşitli hizmetler sağladığından yakın zamanda çeşitli büyük dil modelleri (LLM'ler) ekleyen Üretken Yapay Zeka hizmeti Bedrock'u eklediler. Bu modeller farklı alanlardaki belirli görevler için oluşturulmuştur. Veri bilimcilerin VSCode gibi yazılımlara sorunsuz bir şekilde entegre edebileceği metin üretme modeli ve görüntü modeli gibi çeşitli modellerimiz var. Metin oluşturma, özetleme, çeviri ve daha fazlası gibi farklı NLP görevlerini eğitmek ve dağıtmak için LLM'leri kullanabiliriz.

AWS Ana Kayası

AWS Bedrock'un Temel Özellikleri

  • Önceden Eğitilmiş Modellere Erişim: AWS Bedrock, kullanıcıların sıfırdan model oluşturmaya veya eğitmeye gerek kalmadan kolayca kullanabileceği çok sayıda önceden eğitilmiş LLM modeli sunar.
  • İnce ayar: Kullanıcılar, önceden eğitilmiş modellerde, kendi veri kümelerini kullanarak bunları belirli kullanım örneklerine ve alanlara uyarlamak için ince ayar yapabilir.
  • ölçeklenebilirlik: AWS Bedrock, büyük veri kümelerini ve yoğun bilgi işlem gerektiren yapay zeka iş yüklerini yönetmek için ölçeklenebilirlik sağlayan AWS altyapısı üzerine kurulmuştur.
  • Kapsamlı API: Bedrock, modelle kolayca iletişim kurabileceğimiz kapsamlı bir API sağlar.

AWS Bedrock Nasıl Oluşturulur?

AWS Bedrock'u kurmak basit ama güçlüdür. Amazon Web Services'i (AWS) temel alan bu çerçeve, uygulamalarınız için güvenilir bir temel sağlar. Başlamak için basit adımları izleyelim.

1 Adım: Öncelikle AWS Management Console'a gidin. Ve bölgeyi değiştirin. Kırmızı kutuda us-doğu-1'i işaretledim.

AWS Ana Kayası

2 Adım: Daha sonra AWS Management Console'da “Bedrock”u arayın ve tıklayın. Daha sonra “Başlayın” butonuna tıklayın. Bu sizi kullanıcı arayüzüne erişebileceğiniz Bedrock kontrol paneline götürecektir.

AWS Ana Kayası

3 Adım: Kontrol panelinde LLaMA 2, Claude vb. gibi çeşitli temel modelleri içeren sarı bir dikdörtgen göreceksiniz. Bu modellerin örneklerini ve gösterimlerini görüntülemek için kırmızı dikdörtgene tıklayın.

4 Adım: Örneğe tıkladığınızda kırmızı bir dikdörtgen bulacağınız bir sayfaya yönlendirileceksiniz. Oyun alanı amacıyla bu seçeneklerden herhangi birine tıklayın.

"
"

Kararlı Difüzyon nedir?

Kararlı Difüzyon kullanıcı (metin) girişine dayalı görüntüler üreten bir GenAI modelidir. Kullanıcılar metin istemleri sağlar ve Pratik bölümde gösterildiği gibi Stabil Difüzyon karşılık gelen görüntüleri üretir. 2022'de piyasaya sürüldü ve yüksek kaliteli görüntüler oluşturmak için difüzyon teknolojisinden ve gizli alandan yararlanıyor.

Doğal dil işlemede (NLP) transformatör mimarisinin kullanılmaya başlanmasından sonra önemli ilerlemeler kaydedildi. Bilgisayarlı görü alanında Vision Transformer (ViT) gibi modeller yaygınlaştı. Kodlayıcı-kod çözücü modeli gibi geleneksel mimariler yaygın olsa da Stable Diffusion, U-Net kullanan bir kodlayıcı-kod çözücü mimarisini benimser. Bu mimari seçim, yüksek kaliteli görüntüler oluşturmadaki etkinliğine katkıda bulunur.

Kararlı Yayılma, yalnızca rastgele gürültü kalana kadar görüntüye kademeli olarak Gauss gürültüsü eklenerek çalışır; bu, ileri yayılma olarak bilinen bir süreçtir. Daha sonra bu gürültü, bir gürültü tahmincisi kullanılarak orijinal görüntüyü yeniden oluşturmak için tersine çevrilir.

Genel olarak Stable Diffusion, üretken yapay zekada kayda değer bir ilerlemeyi temsil ediyor ve verimli ve yüksek kaliteli görüntü oluşturma yetenekleri sunuyor.

Kararlı Difüzyon

Kararlı Difüzyonun Temel Özellikleri

  • Görüntü Üretimi: Kararlı Difüzyon, kullanıcıdan (metinden) girdi olarak görüntüler oluşturmak için VIT modelini kullanır.
  • Çok yönlülük: Bu model çok yönlü olduğundan bu modeli kendi alanlarında kullanabiliriz. Resimler, GIF, videolar ve animasyonlar oluşturabiliriz.
  • verim: Kararlı Dağılım modelleri gizli alan kullanır ve diğer görüntü oluşturma modellerine kıyasla daha az işlem gücü gerektirir.
  • İnce Ayar Yetenekleri: Kullanıcılar, kendi özel ihtiyaçlarını karşılamak için Kararlı Difüzyonda ince ayar yapabilirler. Kullanıcılar gürültü giderme adımları ve gürültü seviyeleri gibi parametreleri ayarlayarak çıktıyı tercihlerine göre özelleştirebilirler.

Kararlı yayılma modeli kullanılarak oluşturulan Görüntülerden bazıları

Kararlı Difüzyon
Kararlı Difüzyon

Kararlı Difüzyon Nasıl Oluşturulur?

Kararlı Difüzyon oluşturmak için geliştirme ortamınızı kurmak, modele erişmek ve onu uygun parametrelerle çağırmak da dahil olmak üzere çeşitli adımları izlemeniz gerekir.

Adım 1. Ortamın Hazırlanması

  • Sanal Ortam Oluşturma: Venv kullanarak sanal bir ortam oluşturun
conda create -p ./venv python=3.10 -y
  • Sanal Ortam Aktivasyonu: Sanal ortamı etkinleştirin
conda activate ./venv

Adım 2. Gereksinim Paketlerini Yükleme

!pip install boto3

!pip install awscli

3. Adım: AWS CLI'yi kurma

  • Öncelikle IAM'de bir kullanıcı oluşturmanız ve bu kullanıcıya yönetim erişimi gibi gerekli izinleri vermeniz gerekir.
  • Daha sonra aşağıdaki komutları takip ederek AWS CLI kurulumunu yaparak modele kolaylıkla ulaşabilirsiniz.
  • AWS Kimlik Bilgilerini Yapılandırın: Kurulduktan sonra AWS kimlik bilgilerinizi yapılandırmanız gerekir. Bir terminal veya komut istemi açın ve aşağıdaki komutu çalıştırın:
aws configure
  • Yukarıdaki komutu çalıştırdıktan sonra buna benzer bir kullanıcı arayüzü göreceksiniz.
aws yapılandırmak
  • LLM modeli tüm bölgelerde mevcut olmayabileceğinden lütfen gerekli tüm bilgileri sağladığınızdan ve doğru bölgeyi seçtiğinizden emin olun. Ayrıca AWS Bedrock üzerinde LLM modelinin mevcut olduğu bölgeyi de belirttim.

4. Adım: Gerekli kitaplıkları içe aktarma

  • Gerekli paketleri içe aktarın.
import boto3
import json
import base64
import os
  • Boto3, Amazon Web Services (AWS) kaynaklarıyla programlı olarak etkileşim kurmak için kullanımı kolay bir arayüz sağlayan bir Python kitaplığıdır.

5. Adım: Bir AWS Bedrock İstemcisi oluşturun

bedrock = boto3.client(service_name="bedrock-runtime")

Adım 6: Yük Parametrelerini Tanımlayın

  • Öncelikle AWS Bedrock'taki API'yi gözlemleyin.
AWS Ana Kayası
  • Aşağıdaki hücreyi çalıştırın.
# DEFINE THE USER QUERY
USER_QUERY="provide me an 4k hd image of a beach, also use a blue sky rainy season and
    cinematic display"


payload_params = {
    "text_prompts": [{"text": USER_QUERY, "weight": 1}],
    "cfg_scale": 10,
    "seed": 0,
    "steps": 50,
    "width": 512,
    "height": 512
}

Adım 7: Yük Nesnesini Tanımlayın

model_id = "stability.stable-diffusion-xl-v0"
response = bedrock.invoke_model(
    body= json.dumps(payload_params),
    modelId=model_id,
    accept="application/json",
    contentType="application/json",
)

8. Adım: AWS Bedrock API'sine İstek Gönderin ve Yanıt Metnini Alın

response_body = json.loads(response.get("body").read())
AWS Temel Kaya API'si

Adım 9: Yanıttan Görüntü Verilerini Çıkarın

artifact = response_body.get("artifacts")[0]
image_encoded = artifact.get("base64").encode("utf-8")
image_bytes = base64.b64decode(image_encoded)

Adım 10: Görüntüyü Bir Dosyaya Kaydetme

output_dir = "output"
os.makedirs(output_dir, exist_ok=True)
file_name = f"{output_dir}/generated-img.png"
with open(file_name, "wb") as f:
    f.write(image_bytes)

Adım 11: Streamlit uygulaması oluşturun

  • Öncelikle Streamlit'i kurun. Bunun için terminali açın ve geçin.
pip install streamlit
  • Streamlit Uygulaması için Python Komut Dosyası Oluşturun
import streamlit as st
import boto3
import json
import base64
import os

def generate_image(prompt_text):
    prompt_template = [{"text": prompt_text, "weight": 1}]
    bedrock = boto3.client(service_name="bedrock-runtime")
    payload = {
        "text_prompts": prompt_template,
        "cfg_scale": 10,
        "seed": 0,
        "steps": 50,
        "width": 512,
        "height": 512
    }

    body = json.dumps(payload)
    model_id = "stability.stable-diffusion-xl-v0"
    response = bedrock.invoke_model(
        body=body,
        modelId=model_id,
        accept="application/json",
        contentType="application/json",
    )

    response_body = json.loads(response.get("body").read())
    artifact = response_body.get("artifacts")[0]
    image_encoded = artifact.get("base64").encode("utf-8")
    image_bytes = base64.b64decode(image_encoded)

    # Save image to a file in the output directory.
    output_dir = "output"
    os.makedirs(output_dir, exist_ok=True)
    file_name = f"{output_dir}/generated-img.png"
    with open(file_name, "wb") as f:
        f.write(image_bytes)
    
    return file_name

def main():
    st.title("Generated Image")
    st.write("This Streamlit app generates an image based on the provided text prompt.")

    # Text input field for user prompt
    prompt_text = st.text_input("Enter your text prompt here:")
    
    if st.button("Generate Image") and prompt_text:
        image_file = generate_image(prompt_text)
        st.image(image_file, caption="Generated Image", use_column_width=True)
    elif st.button("Generate Image") and not prompt_text:
        st.error("Please enter a text prompt.")

if __name__ == "__main__":
    main()
  • Streamlit Uygulamasını Çalıştırın
streamlit run app.py
"

LLaMA 2 nedir?

LLaMA 2 veya Birçok Uygulamanın Büyük Dil Modeli, Büyük Dil Modelleri (LLM) kategorisine aittir. Facebook (Meta), bu modeli geniş bir doğal dil işleme (NLP) uygulamaları yelpazesini keşfetmek için geliştirdi. Daha önceki serilerde 'LAMA' modeli geliştirmenin başlangıç ​​yüzüydü ancak eski yöntemleri kullanıyordu.

LLAMA2

LLaMA 2'nin Temel Özellikleri

  • Çok yönlülük: LLaMA 2, çeşitli görevleri yüksek doğruluk ve verimlilikle yerine getirebilen güçlü bir modeldir
  • Bağlamsal Anlama: Sıradan diziye öğrenmede fonemleri, morfemleri, sözcük birimlerini, sözdizimini ve bağlamı keşfederiz. LLaMA 2 bağlamsal nüansların daha iyi anlaşılmasını sağlar.
  • Transfer Öğrenimi: LLaMA 2, geniş bir veri kümesi üzerinde kapsamlı eğitimden yararlanan sağlam bir modeldir. Transfer öğrenimi, belirli görevlere hızlı uyum sağlamayı kolaylaştırır.
  • Açık Kaynak: Veri Biliminde önemli bir husus topluluktur. Açık kaynak modelleri araştırmacıların, geliştiricilerin ve toplulukların bunları keşfetmesine, uyarlamasına ve projelerine entegre etmesine olanak tanır.

Kullanım ÇÖZÜMLER

  • LLaMA 2 yardımcı olabilir metin oluşturma oluşturma gibi görevler hikaye yazma, içerik oluşturma, vb.
  • Sıfır atışla öğrenmenin önemini biliyoruz. Yani LLaMA 2'yi kullanabiliriz soru cevap için ChatGPT'ye benzer görevler. İlgili ve doğru yanıtlar sağlar.
  • Dil çevirisi için piyasada API'lerimiz var ancak abone olmamız gerekiyor. Ancak LLaMA 2 ücretsiz dil çevirisi sağlar, kullanımını kolaylaştırıyor.
  • LLaMA 2'nin kullanımı kolaydır ve geliştirme için mükemmel bir seçimdir chatbots.

LLaMA 2 Nasıl Oluşturulur

LLaMA 2'yi oluşturmak için geliştirme ortamınızı ayarlama, modele erişme ve onu uygun parametrelerle çağırma dahil olmak üzere çeşitli adımları izlemeniz gerekir.

1. Adım: Kitaplıkları İçe Aktarın

  • Not defterinin ilk hücresine gerekli kitaplıkları içe aktarın:
import boto3
import json

2. Adım: Prompt'u ve AWS Bedrock Client'ı Tanımlayın 

  • Sonraki hücrede şiiri oluşturmaya yönelik istemi tanımlayın ve AWS Bedrock API'sine erişim için bir istemci oluşturun:
prompt_data = """
Act as a Shakespeare and write a poem on Generative AI
"""

bedrock = boto3.client(service_name="bedrock-runtime")

Adım 3: Yükü Tanımlayın ve Modeli Çağırın

  • Öncelikle AWS Bedrock'taki API'yi gözlemleyin.
AWS Ana Kayası
  • Komut istemi ve diğer parametrelerle veri yükünü tanımlayın, ardından AWS Bedrock istemcisini kullanarak modeli çağırın:
payload = {
    "prompt": "[INST]" + prompt_data + "[/INST]",
    "max_gen_len": 512,
    "temperature": 0.5,
    "top_p": 0.9
}

body = json.dumps(payload)
model_id = "meta.llama2-70b-chat-v1"
response = bedrock.invoke_model(
    body=body,
    modelId=model_id,
    accept="application/json",
    contentType="application/json"
)

response_body = json.loads(response.get("body").read())
response_text = response_body['generation']
print(response_text)

Adım 4: Not Defterini Çalıştırın

  • Shift + Enter tuşlarına basarak not defterindeki hücreleri tek tek yürütün. Son hücrenin çıktısı oluşturulan şiiri gösterecektir.
AWS Ana Kayası

Adım 5: Streamlit uygulaması oluşturun

  • Python Komut Dosyası Oluşturun: Yeni bir Python komut dosyası oluşturun (örn. llama2_app.py) ve tercih ettiğiniz kod düzenleyicide açın
import streamlit as st
import boto3
import json

# Define AWS Bedrock client
bedrock = boto3.client(service_name="bedrock-runtime")

# Streamlit app layout
st.title('LLama2 Model App')

# Text input for user prompt
user_prompt = st.text_area('Enter your text prompt here:', '')

# Button to trigger model invocation
if st.button('Generate Output'):
    payload = {
        "prompt": user_prompt,
        "max_gen_len": 512,
        "temperature": 0.5,
        "top_p": 0.9
    }
    body = json.dumps(payload)
    model_id = "meta.llama2-70b-chat-v1"
    response = bedrock.invoke_model(
        body=body,
        modelId=model_id,
        accept="application/json",
        contentType="application/json"
    )
    response_body = json.loads(response.get("body").read())
    generation = response_body['generation']
    st.text('Generated Output:')
    st.write(generation)
  • Streamlit Uygulamasını çalıştırın:
    • Python betiğinizi kaydedin ve terminalinizdeki Streamlit komutunu kullanarak çalıştırın:
streamlit run llama2_app.py
LLama2 Model Uygulaması

AWS Bedrock Fiyatlandırması

The AWS Bedrock fiyatlandırması model barındırma, çıkarım istekleri, veri depolama ve veri aktarımı gibi çeşitli faktörlere ve kullandığınız hizmetlere bağlıdır. AWS genellikle kullanıma göre ücret alır; yani yalnızca kullandığınız kadar ödersiniz. AWS fiyatlandırma yapısını değiştirebileceğinden resmi fiyatlandırma sayfasını kontrol etmenizi öneririm. Size güncel ücretleri sağlayabilirim, ancak en iyisi şu bilgileri doğrulamaktır: resmi sayfası En doğru ayrıntılar için.

Meta LlaMA 2

Meta Lama 2

Stabilite AI

Stabilite AI

Sonuç

Bu blog, özellikle iki güçlü LLM modeline odaklanarak üretken yapay zeka alanını derinlemesine inceledi: Stabil Difüzyon ve LLamV2. Ayrıca LLM modeli API'leri oluşturmaya yönelik bir platform olarak AWS Bedrock'u da inceledik. Bu API'leri kullanarak modellerle etkileşime girecek kodun nasıl yazılacağını gösterdik. Ayrıca modellerin yeteneklerini denemek ve değerlendirmek için AWS Bedrock oyun alanını kullandık.

Başlangıçta AWS Bedrock'ta doğru bölgeyi seçmenin önemini vurguladık çünkü bu modeller her bölgede mevcut olmayabilir. İlerleyen süreçte, Jupyter not defterlerinin oluşturulmasıyla başlayarak ve ardından Streamlit uygulamalarının geliştirilmesine geçerek her LLM modelinin pratik bir incelemesini sağladık.

Son olarak, ilgili maliyetleri anlamanın ve doğru bilgi için resmi fiyatlandırma sayfasına başvurmanın gerekliliğini vurgulayarak AWS Bedrock'un fiyatlandırma yapısını tartıştık.

Önemli Noktalar

  • AWS Bedrock'taki Stable Diffusion ve LLAMV2, güçlü üretken yapay zeka özelliklerine kolay erişim sunar.
  • AWS Bedrock, sorunsuz entegrasyon için basit bir arayüz ve kapsamlı belgeler sağlar.
  • Bu modellerin farklı temel özellikleri ve çeşitli alanlardaki kullanım durumları vardır.
  • AWS Bedrock'ta istediğiniz modellere erişim için doğru bölgeyi seçmeyi unutmayın.
  • Stable Diffusion ve LLAMv2 gibi üretken yapay zeka modellerinin pratik uygulaması, AWS Bedrock'ta verimlilik sunar.

Sık Sorulan Sorular

Q1. Üretken Yapay Zeka nedir?

C. Üretken yapay zeka, yalnızca mevcut verileri analiz etmek yerine görüntüler, metin veya kod gibi yeni içerikler oluşturmaya odaklanan bir yapay zeka alt kümesidir.

Q2. Kararlı Difüzyon nedir?

A. Kararlı Yayılma, yayılma teknolojisini ve gizli alanı kullanarak metin ve görüntü istemlerinden fotogerçekçi görüntüler üreten üretken bir yapay zeka modelidir.

Q3. AWS Bedrock nasıl çalışır?

C. AWS Bedrock, modelleri yönetmek, eğitmek ve dağıtmak için API'ler sağlayarak kullanıcıların çeşitli uygulamalar için LLAMv2 gibi büyük dil modellerine erişmesine olanak tanır.

Q4.AWS Bedrock'ta LLM modellerine nasıl erişebilirim?

C. Modeli belirli parametrelerle çağırmak ve oluşturulan çıktıyı almak gibi, sağlanan API'leri kullanarak AWS Bedrock'taki LLM modellerine erişebilirsiniz.

Q5. Kararlı Difüzyonun temel özellikleri nelerdir?

A. Stabil Difüzyon, metin istemlerinden yüksek kaliteli görüntüler oluşturabilir, gizli alanı kullanarak verimli bir şekilde çalışır ve çok çeşitli kullanıcılar tarafından erişilebilir.

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır.

spot_img

En Son İstihbarat

spot_img