--- license: apache-2.0 language: - zh - en tags: - qwen - lora - peft - large-language-model - quantitative-finance - stock-market - trading-strategy - investment-education - financial-explainer - text-generation - instruction-following base_model: Qwen/Qwen-1_8B-Chat pipeline_tag: text-generation widget: # Example of how to use the model with PEFT # (You'll need to adjust this based on how Qwen LoRA models are typically loaded) - text: "请用大白话解释什么是移动平均线?" example_title: "Explain Moving Average" --- # Qwen-1.8B-Chat LoRA for Stock Market Quantitative Education (股票量化投教LoRA模型) This repository contains LoRA (Low-Rank Adaptation) adapters fine-tuned on the `Qwen/Qwen-1_8B-Chat` model. The goal of this fine-tuning is to create an AI assistant that can explain stock market and quantitative trading concepts in plain language ("大白话"), making these topics more accessible to beginners. ## Model Description This model is a PEFT-LoRA adaptation of the `Qwen/Qwen-1_8B-Chat` large language model. It has been fine-tuned on a small, custom dataset of ~20 instruction-response pairs focused on financial education. Due to the small dataset size, this model should be considered **experimental and for demonstration purposes**. **Developed by:** 天算AI科技研发实验室 (Natural Algorithm AI R&D Lab) - jinv2 ## Intended Uses & Limitations **Intended Uses:** * Educational tool for understanding basic stock market and quantitative trading terms. * Generating simple explanations of financial concepts. * Demonstrating the LoRA fine-tuning process on a chat model for a specific domain. **Limitations:** * **Not for Financial Advice:** The information provided by this model is strictly for educational purposes and should NOT be considered financial advice. Always consult with a qualified financial advisor before making investment decisions. * **Limited Knowledge:** Fine-tuned on a very small dataset. Its knowledge is restricted and may not be comprehensive or entirely accurate. * **Potential for Hallucinations:** Like all LLMs, it may generate incorrect or nonsensical information. * **Overfitting:** Due to the small dataset, the model may be overfit to the training examples. * **Bias:** The training data may contain biases, which could be reflected in the model's responses. * **Requires Base Model:** These are LoRA adapters and require the original `Qwen/Qwen-1_8B-Chat` base model to be loaded first. ## How to Use with PEFT You would typically load the base model and then apply these LoRA adapters using the PEFT library. ```python from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer import torch base_model_name = "Qwen/Qwen-1_8B-Chat" adapter_model_name = "jinv2/qwen-1.8b-chat-lora-stock-quant-edu" # Replace with your actual model name on Hub # Load tokenizer tokenizer = AutoTokenizer.from_pretrained(base_model_name, trust_remote_code=True) if tokenizer.pad_token_id is None: tokenizer.pad_token_id = tokenizer.eos_token_id # Or <|endoftext|> ID: 151643 # Load base model base_model = AutoModelForCausalLM.from_pretrained( base_model_name, torch_dtype=torch.float16, # or "auto" device_map="auto", trust_remote_code=True ) # Load LoRA adapter model = PeftModel.from_pretrained(base_model, adapter_model_name) model = model.eval() # Set to evaluation mode # Example Inference (Qwen chat format) prompt = "请用大白话解释什么是MACD指标?" # For Qwen-Chat, using model.chat() is recommended response, history = model.chat(tokenizer, prompt, history=None, system="You are a helpful financial education assistant.") print(response) # Alternative generic generation # messages = [ # {"role": "system", "content": "You are a helpful financial education assistant."}, # {"role": "user", "content": prompt} # ] # text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) # model_inputs = tokenizer([text], return_tensors="pt").to(model.device) # generated_ids = model.generate(model_inputs.input_ids, max_new_tokens=512) # generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)] # response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] # print(response) Training Details Base Model: Qwen/Qwen-1_8B-Chat Fine-tuning Method: LoRA (Low-Rank Adaptation) via PEFT and TRL SFTTrainer. Dataset: ~20 custom instruction-response pairs for financial education. Training Configuration (Key Parameters): LoRA r: 8 LoRA alpha: 16 Target Modules: c_attn, c_proj, w1, w2 Optimizer: AdamW (default from Trainer) Precision: FP32 (due to issues with FP16/BF16 GradScaler in the environment) Epochs: ~17 (based on 80 steps) Batch Size (effective): 4 (per_device_train_batch_size=1, gradient_accumulation_steps=4) Learning Rate: 2e-4 Max Sequence Length: 512 Disclaimer This model is provided "as-is" without any warranty. The developers are not responsible for any outcomes resulting from the use of this model. Always verify information and use at your own risk. Copyright Information: © 天算AI科技研发实验室 (Natural Algorithm AI R&D Lab) - jinv2 All rights reserved unless otherwise specified by the license.