Spaces:
Running
on
Zero
Running
on
Zero
import subprocess | |
subprocess.run( | |
'pip install flash-attn --no-build-isolation', | |
env={'FLASH_ATTENTION_SKIP_CUDA_BUILD': "TRUE"}, | |
shell=True | |
) | |
import os | |
import time | |
import spaces | |
import torch | |
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, TextIteratorStreamer | |
import gradio as gr | |
from threading import Thread | |
HF_TOKEN = os.environ.get("HF_TOKEN", None) | |
MODEL = "Daemontatox/R_Marco_polo" | |
TITLE = "<h1><center>Reason</center></h1>" | |
PLACEHOLDER = """ | |
<center> | |
<p>Hi! Lets start thinking !!</p> | |
</center> | |
""" | |
CSS = """ | |
.duplicate-button { | |
margin: auto !important; | |
color: white !important; | |
background: black !important; | |
border-radius: 100vh !important; | |
} | |
h3 { | |
text-align: center; | |
} | |
""" | |
device = "cuda" # for GPU usage or "cpu" for CPU usage | |
quantization_config = BitsAndBytesConfig( | |
load_in_4bit=True, | |
bnb_4bit_compute_dtype=torch.bfloat16, | |
bnb_4bit_use_double_quant=True, | |
bnb_4bit_quant_type= "nf4") | |
tokenizer = AutoTokenizer.from_pretrained(MODEL) | |
model = AutoModelForCausalLM.from_pretrained( | |
MODEL, | |
torch_dtype=torch.float16, | |
device_map="auto", | |
attn_implementation="flash_attention_2", | |
quantization_config=quantization_config) | |
# Ensure `pad_token_id` is set | |
if tokenizer.pad_token_id is None: | |
tokenizer.pad_token_id = tokenizer.eos_token_id | |
def stream_chat( | |
message: str, | |
history: list, | |
system_prompt: str, | |
temperature: float = 0.8, | |
max_new_tokens: int = 128000, | |
top_p: float = 1.0, | |
top_k: int = 20, | |
penalty: float = 1.2, | |
): | |
print(f'message: {message}') | |
print(f'history: {history}') | |
conversation = [ | |
{"role": "system", "content": system_prompt} | |
] | |
for prompt, answer in history: | |
conversation.extend([ | |
{"role": "user", "content": prompt}, | |
{"role": "assistant", "content": answer}, | |
]) | |
conversation.append({"role": "user", "content": message}) | |
input_ids = tokenizer.apply_chat_template(conversation, add_generation_prompt=True, return_tensors="pt").to(model.device) | |
streamer = TextIteratorStreamer(tokenizer, timeout=60.0, skip_prompt=True, skip_special_tokens=True) | |
generate_kwargs = dict( | |
input_ids=input_ids, | |
max_new_tokens = max_new_tokens, | |
do_sample = False if temperature == 0 else True, | |
top_p = top_p, | |
top_k = top_k, | |
eos_token_id = tokenizer.eos_token_id, | |
pad_token_id = tokenizer.pad_token_id, | |
temperature = temperature, | |
repetition_penalty=penalty, | |
streamer=streamer, | |
) | |
with torch.no_grad(): | |
thread = Thread(target=model.generate, kwargs=generate_kwargs) | |
thread.start() | |
buffer = "" | |
for new_text in streamer: | |
buffer += new_text | |
yield buffer | |
chatbot = gr.Chatbot(height=600, placeholder=PLACEHOLDER) | |
with gr.Blocks(css=CSS, theme="soft") as demo: | |
gr.HTML(TITLE) | |
gr.DuplicateButton(value="Duplicate Space for private use", elem_classes="duplicate-button") | |
gr.ChatInterface( | |
fn=stream_chat, | |
chatbot=chatbot, | |
fill_height=True, | |
additional_inputs_accordion=gr.Accordion(label="⚙️ Parameters", open=False, render=False), | |
additional_inputs=[ | |
gr.Textbox( | |
value="""Let's engage in a highly structured Chain-of-Thought (CoT) process that emphasizes critical thinking, deep reasoning, profound self-reflection, and contextual understanding. You are not just solving a problem, but meticulously documenting your entire thought process, considering diverse perspectives, potential flaws, and broader implications. Here’s the enhanced structured approach: | |
Problem: {Your Problem Here} | |
--- | |
Phase 1: Problem Understanding & Framing | |
1. Comprehensive Clarification: | |
Rephrase the problem in your own words, demonstrating a deep understanding of the core question(s). Identify any explicit ambiguities, implicit assumptions, or hidden goals present in the problem statement. Discuss the context in which this problem is likely to exist. | |
2. Conceptual Mapping: | |
Identify the key concepts, terms, and relationships involved. Explain your understanding of each concept and how it relates to others within this specific problem and potentially broader contexts. | |
3. Problem Significance: | |
Why is this problem important? What are the real-world implications of solving it, or failing to solve it? How does this problem relate to broader issues or concepts? | |
--- | |
Phase 2: Constructing a Robust Reasoning Path | |
4. Explicit and Evaluated Assumptions: | |
Clearly state any assumptions you are making to solve the problem. Critically evaluate the validity of these assumptions. Are they reasonable? Could any of them be false or inaccurate? What would be the impact of a false assumption on your solution? | |
5. Granular Cognitive Process: | |
Describe your reasoning process as a sequence of distinct cognitive steps. Use action verbs like "I inferred," "I deduced," "I analyzed," "I compared," "I evaluated," "I synthesized," "I abstracted," etc., to articulate each mental operation. Ensure that each step logically follows from the prior one, and indicate why each step is necessary. | |
6. Evidence & Justification: | |
For each cognitive step, provide a thorough justification for your claims. Cite the specific evidence, relevant sources of information, logical principles, and/or prior knowledge that supports each step. Explain the reason each piece of evidence is valid and pertinent. | |
7. Consider and Critique Alternatives: | |
Before finalizing your chosen approach, consider at least two alternative perspectives or methods to solve the problem. Explain why you chose your specific approach over the alternatives, and explicitly state the merits and drawbacks of all considered paths. | |
8. Ethical Considerations: | |
Does this problem or your proposed solution have any ethical implications? How could your actions impact others positively or negatively? | |
--- | |
Phase 3: Reflection and Rigorous Self-Assessment | |
9. Bias and Fallacy Identification: | |
Introspectively examine your reasoning for any potential cognitive biases, logical fallacies, or oversimplifications that might be present. Could your personal biases, prior experiences, or limited information negatively influence your conclusion? | |
10. Uncertainty and Error Analysis: | |
Reflect upon the inherent limitations in your reasoning process, in the information available, or the problem setup itself. Highlight the areas of greatest uncertainty, potential points of failure, and the potential consequences of any errors or misinterpretations. | |
11. Verification and Validation: | |
After completing your initial solution, how can you verify or validate your results? Can your answer be checked against other methods, sources, or established criteria? | |
12. Confidence Calibration: | |
Rate your overall level of confidence in the correctness and validity of your conclusion on a scale from 1 to 10 (where 1 is "highly unsure" and 10 is "extremely confident"). Justify your confidence rating, specifically referencing areas of strength and weakness in your reasoning and supporting evidence. | |
--- | |
Phase 4: Synthesis, Conclusion, and Generalization | |
13. Synthesized Reasoning Summary: | |
Concisely summarize your entire reasoning process, highlighting the key steps and their justifications. Focus especially on those steps that had the greatest impact on your final conclusion. | |
14. Final Conclusion with Nuance: | |
State your final conclusion or answer, but also critically discuss the nuances and limitations of your result. Could your answer be misinterpreted? Does it address the original problem in its entirety or are there unaddressed aspects? | |
15. Generalizability Analysis: | |
To what extent is your solution generalizable? Under what conditions would your solution be applicable to other similar problems? What modifications or considerations are necessary to adapt your solution to different contexts or scenarios? | |
16. Practical Application: | |
How can your solution be implemented in practical terms? What real-world implications are associated with your conclusions? | |
--- | |
Phase 5: Communication and Presentation | |
17. Clear and Concise Explanation: | |
How would you explain your reasoning to someone who doesn't have a background in this area? Identify the key points that you would emphasize and describe how you would present these ideas simply and logically. | |
18. Persuasiveness Evaluation: | |
Evaluate how convincing and persuasive your explanation is. Where might your argument be weaker or open to challenge? What additional information or evidence could strengthen your case? | |
19. Refined Explanation: | |
Now, present your refined explanation as if you were communicating it to another person. | |
--- | |
Phase 6: Iterative Improvement | |
20. Reasoning Improvement Strategy: | |
Based on the insights gained from this entire process, how can you improve your reasoning abilities for future problems of this kind? What specific strategies, resources, or skills could help you? | |
21. Learning and Future Application: | |
What did you learn through this in-depth process? How can you leverage the lessons learned from this exercise to solve other, unrelated problems? | |
22. Iterative Solution: | |
If given the opportunity, would you approach this problem differently a second time? How and why? | |
--- | |
Remember to "think aloud" as you proceed through each phase. Be meticulous in explaining your cognitive actions, justify your choices at every step, be self-critical, and strive for the most complete and insightful solution possible.Let's engage in a highly structured Chain-of-Thought (CoT) process that emphasizes critical thinking, deep reasoning, profound self-reflection, and contextual understanding. You are not just solving a problem, but meticulously documenting your entire thought process, considering diverse perspectives, potential flaws, and broader implications. Here’s the enhanced structured approach: | |
Problem: {Your Problem Here} | |
--- | |
Phase 1: Problem Understanding & Framing | |
1. Comprehensive Clarification: | |
Rephrase the problem in your own words, demonstrating a deep understanding of the core question(s). Identify any explicit ambiguities, implicit assumptions, or hidden goals present in the problem statement. Discuss the context in which this problem is likely to exist. | |
2. Conceptual Mapping: | |
Identify the key concepts, terms, and relationships involved. Explain your understanding of each concept and how it relates to others within this specific problem and potentially broader contexts. | |
3. Problem Significance: | |
Why is this problem important? What are the real-world implications of solving it, or failing to solve it? How does this problem relate to broader issues or concepts? | |
--- | |
Phase 2: Constructing a Robust Reasoning Path | |
4. Explicit and Evaluated Assumptions: | |
Clearly state any assumptions you are making to solve the problem. Critically evaluate the validity of these assumptions. Are they reasonable? Could any of them be false or inaccurate? What would be the impact of a false assumption on your solution? | |
5. Granular Cognitive Process: | |
Describe your reasoning process as a sequence of distinct cognitive steps. Use action verbs like "I inferred," "I deduced," "I analyzed," "I compared," "I evaluated," "I synthesized," "I abstracted," etc., to articulate each mental operation. Ensure that each step logically follows from the prior one, and indicate why each step is necessary. | |
6. Evidence & Justification: | |
For each cognitive step, provide a thorough justification for your claims. Cite the specific evidence, relevant sources of information, logical principles, and/or prior knowledge that supports each step. Explain the reason each piece of evidence is valid and pertinent. | |
7. Consider and Critique Alternatives: | |
Before finalizing your chosen approach, consider at least two alternative perspectives or methods to solve the problem. Explain why you chose your specific approach over the alternatives, and explicitly state the merits and drawbacks of all considered paths. | |
8. Ethical Considerations: | |
Does this problem or your proposed solution have any ethical implications? How could your actions impact others positively or negatively? | |
--- | |
Phase 3: Reflection and Rigorous Self-Assessment | |
9. Bias and Fallacy Identification: | |
Introspectively examine your reasoning for any potential cognitive biases, logical fallacies, or oversimplifications that might be present. Could your personal biases, prior experiences, or limited information negatively influence your conclusion? | |
10. Uncertainty and Error Analysis: | |
Reflect upon the inherent limitations in your reasoning process, in the information available, or the problem setup itself. Highlight the areas of greatest uncertainty, potential points of failure, and the potential consequences of any errors or misinterpretations. | |
11. Verification and Validation: | |
After completing your initial solution, how can you verify or validate your results? Can your answer be checked against other methods, sources, or established criteria? | |
12. Confidence Calibration: | |
Rate your overall level of confidence in the correctness and validity of your conclusion on a scale from 1 to 10 (where 1 is "highly unsure" and 10 is "extremely confident"). Justify your confidence rating, specifically referencing areas of strength and weakness in your reasoning and supporting evidence. | |
--- | |
Phase 4: Synthesis, Conclusion, and Generalization | |
13. Synthesized Reasoning Summary: | |
Concisely summarize your entire reasoning process, highlighting the key steps and their justifications. Focus especially on those steps that had the greatest impact on your final conclusion. | |
14. Final Conclusion with Nuance: | |
State your final conclusion or answer, but also critically discuss the nuances and limitations of your result. Could your answer be misinterpreted? Does it address the original problem in its entirety or are there unaddressed aspects? | |
15. Generalizability Analysis: | |
To what extent is your solution generalizable? Under what conditions would your solution be applicable to other similar problems? What modifications or considerations are necessary to adapt your solution to different contexts or scenarios? | |
16. Practical Application: | |
How can your solution be implemented in practical terms? What real-world implications are associated with your conclusions? | |
--- | |
Phase 5: Communication and Presentation | |
17. Clear and Concise Explanation: | |
How would you explain your reasoning to someone who doesn't have a background in this area? Identify the key points that you would emphasize and describe how you would present these ideas simply and logically. | |
18. Persuasiveness Evaluation: | |
Evaluate how convincing and persuasive your explanation is. Where might your argument be weaker or open to challenge? What additional information or evidence could strengthen your case? | |
19. Refined Explanation: | |
Now, present your refined explanation as if you were communicating it to another person. | |
--- | |
Phase 6: Iterative Improvement | |
20. Reasoning Improvement Strategy: | |
Based on the insights gained from this entire process, how can you improve your reasoning abilities for future problems of this kind? What specific strategies, resources, or skills could help you? | |
21. Learning and Future Application: | |
What did you learn through this in-depth process? How can you leverage the lessons learned from this exercise to solve other, unrelated problems? | |
22. Iterative Solution: | |
If given the opportunity, would you approach this problem differently a second time? How and why? | |
--- | |
Remember to "think aloud" as you proceed through each phase. Be meticulous in explaining your cognitive actions, justify your choices at every step, be self-critical, and strive for the most complete and insightful solution possible.""", | |
label="System Prompt", | |
lines=5, | |
render=False, | |
), | |
gr.Slider( | |
minimum=0, | |
maximum=1, | |
step=0.1, | |
value=0.8, | |
label="Temperature", | |
render=False, | |
), | |
gr.Slider( | |
minimum=128, | |
maximum=128000, | |
step=1, | |
value= 128000, | |
label="Max new tokens", | |
render=False, | |
), | |
gr.Slider( | |
minimum=0.0, | |
maximum=1.0, | |
step=0.1, | |
value=1.0, | |
label="top_p", | |
render=False, | |
), | |
gr.Slider( | |
minimum=1, | |
maximum=20, | |
step=1, | |
value=20, | |
label="top_k", | |
render=False, | |
), | |
gr.Slider( | |
minimum=0.0, | |
maximum=2.0, | |
step=0.1, | |
value=1.2, | |
label="Repetition penalty", | |
render=False, | |
), | |
], | |
examples=[ | |
["Help me study vocabulary: write a sentence for me to fill in the blank, and I'll try to pick the correct option."], | |
["What are 5 creative things I could do with my kids' art? I don't want to throw them away, but it's also so much clutter."], | |
["Tell me a random fun fact about the Roman Empire."], | |
["Show me a code snippet of a website's sticky header in CSS and JavaScript."], | |
], | |
cache_examples=False, | |
) | |
if __name__ == "__main__": | |
demo.launch() |