Skip to content

nikalosa/data-challenge-22

Repository files navigation

Data Challenge 2022, Sentiment Analysis

Overview

დატრენინგებული მოდელები დიდი მოცულობის გამო არის ატვირთული დრაივზე. გადმოწერის შემდეგ ამოაარქივებული ფოლდერი უნდა ჩააგდოთ models ფოლდერში. ტოპ შედეგების მქონე სატესტო მონაცემებზე: model_700_1, model_500_1, model_300_1. მაგრამ სხვებიც ახლოს არიან ერთმანეთთან.

მონაცემების დალეიბლების გასამარტივებლად ავაწყვეთ საიტი react-ზე, მენაცემების შესანახად და backend-თვის გამოვიყენეთ gcp-ის bigquery და google function-ები. შესაბამისად მაინც ავტივრთეთ ორივე ნაშრომი, საიტი labling-app-react ფოლდერში, ხოლო functions-ში google-function-ის იმპლემენტაცია.

დავალეიბლეთ დაახლოებით 42,000 ჩანაწერი რომელთა გაფილტრული ვერსია training/whole_comments_35k ფაილშია. აქედან კიდევ იფილტრება მონაცემები კოდში, რომ ბალანსირებული იყოს კლასების მიხედვით და ჯამში ეს შედეგები მიღებულია 22,000 მონაცემებზე დატრენინგებით.

Inference

  • csv - ის გასატესტად საჭიროა გამოიძახოთ inference_csv კოდი. csv-ს უნდა ჰქონდეს comment_id, comment_message, post_message სვეტები. ასევე, თუ გადმოეცემა სვეტი სახელად sentiment ავტომატურად გამოვიტანთ f1 score-ს, accuracy-ს და loss-ს. შედეგები ინახება results/ ფოლდერში.
    Command line parameters:

    --csv: მისამართი სატესტო ფაილამდე
    
    
    --with_labels: მოყვება თუარა მონაცემებს ლეიბლები, თუ არ მოყვება არ მიუთითოთ (default: False)
    
    
    --model_path: კონკრეტული მოდელის მისამართი (default: "models/model_700_1")
    
    
    Example: python3 inference_csv.py --csv ./training/labling-test-data-updated.csv --with_labels --model_path ./models/model_700_1
    
  • text - ის გასატესტად საჭიროა გამოიძახოთ inference_text კოდი, რომელსაც გადასცემთ პარამეტრებად comment-ს და post-ს. შესაძლებელია მხოლოდ comment-იც გადასცეთ უბრალოდ სიზუსტე მცირედით შეცვლილი იქნება, რადგან კომენტარსაც მნიშვნელობა აქვს კომენტარის კლასიფიკაციის დროს.
    Command line parameters:

    --comment: ტექსტი რისი სენტიმენტიც გვაინტერესებს
    
    
    --post: პოსტი რაზეც არის კომენტარი გაკეთებული (default: "")
    
    
    --model_path: კონკრეტული მოდელის მისამართუ (default: "models/model_700_1")
    
    
    --format: int ან str გამოიტანოს პასუხად 0, 1 ან 2  თუ  დადებითი, ნეგატიური, ნეიტრალური
    
    Example: python3 inference_text.py --comment "მაგრები ხართ <3"  --post "ქართველებმა გაიმარჯვეს საერთაშორისო კონკურსში კონკურსში" --format str
    

მოცემული მოდელს თუ გაუშვებთ CPU-ზე დიდი დრო დაჭირდება ამ მეთოდების მორჩენას, ასევე დაბალი ხარისხის GPU-ზეც. ჩვენ ვტესტავდით და ვატრენინგებით მოდელს NVIDIA GPU A-100-ის გამოყენებით.

Training

მოდელები დატრენინგებულია xlm-roberta-large-ის fine tuning-ით. ვიყენებდით Jarvislabs.ai cloud-ს დასატრენინგებლად, სადაც ვქირაობდით Nvidia GPU A-100-ს 32GB GPU RAM-ით. training ფოლდერში არის სკრიპტები რასაც ვიყენებდით მოდელის სასწავლებლად. huggingface-roberta-8-last არის საბოლოო შედეგების მქონე სკრიპტი.

ასევე გავამზადეთ Train ფუნქცია რომლის გამოყენებით თქვენც შეგიძლიათ სცადოთ ტრენინგი. მეთოდში წერია ის კოდი და პარამეტრები, რომელებმაც საუკეთესო შედეგი დადეს. ამ მომენტში custom პარამეტრებს არ იღებს ფუნქცია, როგორიცაა ტექსტის პროცესინგში საჭირო პარამეტრები, ან მოდელის პარამეტრები როგორიცაა batch_size, num_train_epoch-ს და ა.შ. მიღებულ checkpoint-ები ავტომატურად ინახება model ფოლდერში, რომელიც ასევე ავტომატურად შეიქმნება.
Command line parameters:

  --test_csv: სავალიდაციო ფაილი. საჭირო სვეტები: post_message, comment_message, 'sentiment' (default: ./training/labling-test-data-updated.csv)

  Example: python3 train.py

სწავლებისას ჩვენ ვიყენებდით 1 GPU-ს, დისტრიბუციული დატრენინგებისას შეგვიძლია ასევე fp16 False გავხადოთ და gradient_checkpointing-იც გამოვრთოთ, რის შედეგაც უკეთესი შედეგებია მოსალოდნელი, უბრალოდ ეს ცვლილებები GPU-ს საკმაოდ დიდ მახსოვრობას მოითხოვს, ერთი ცალი A-100 ინსტანს კი 32GB მახსოვრობა აქვს და დისტრიბუციულ ტრენინგს საკმაოდ დიდი ინფრასტრუქტურული მუშაობა უნდა, რომ სწორად და ეფექტურად გაიმართოს, ამიტომ არ ჩავთვალეთ ამ ეტაპზე საჭიროდ.

P.S.

პრეზენტაციისთვის მოვამზადებთ დაწვრილებით დოკუმენტაციას, რა მეთოდები ვცადეთ, როგორ დავამუშავეთ ტექსტი და ა.შ.

თუ რომელიმე ფუნქციონალი არ გაეშვება დაგეხმარებით რომ გამართოთ.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors