Skip to content

Instantly share code, notes, and snippets.

@ivictbor
Created February 16, 2022 13:23
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save ivictbor/20f8000d9f67f34b68934d9aacc16b20 to your computer and use it in GitHub Desktop.
Benchmark GPT-J model generation speed
import aiohttp
import json
import asyncio
import datetime
import matplotlib.pyplot as plt
text = """
Planning a project is one thing, but making sure deadlines are met and all tasks are completed is a whole other. Falling behind is easy when an entire sequence of events is dependent on the previous being successfully finished.
Whether the reason was a technical issue, one of your team members falling ill, or not having enough hours in a day, it can become very stressful when a project isn't delivered on time. As with most issues in life, there is a simple solution to ensure you meet deadlines and perform the tasks without any gaps - and it’s called fast tracking.
Let's dive into the topic of fast tracking in project management, discover its crucial benefits, and find a step-by-step plan to fast tracking approach implementation.
What is fast tracking in project management?
In traditional project planning, tasks are set up to be done in a specific sequence with certain deadlines. Fast tracking in project management is a timeline compression technique that helps companies complete projects with critical deadlines.
In other words, it requires different teams to work on various tasks without waiting for the previous task to be successfully finished.
Of course, this business technique can be used only when tasks involved in a project can be overlapped and done simultaneously.
fast tracking technique
For example, when setting up a wedding, you can't arrange the tables and flowers before having a venue. But once the venue is decided, all the tables, cutlery, and flowers can be put out together instead of one after the other.
In this example, good management of time and rearrangement of tasks provides a better solution. This is the essence of fast tracking in project management.
Keep in mind that this technique should not be confused with crashing, another method to meet critical deadlines. Let's take a minute to understand the differences between these two.
Crashing vs. fast tracking
Crashing and fast tracking are two project management terms that shouldn't be used in place of each other as they are significantly different.
Fast tracking is used when a project isn't done on time. Here, resources are added to the project without costing the company too much money. The most compression is obtained with the lowest price possible.
Crashing is based on adding resources to those tasks that will help complete the project as soon as possible. After a crash analysis, the activities with the lowest crash cost per unit time are identified.
Even with the calculations of costs vs. benefits, crashing generally costs more than fast tracking.
crashing vs fast tracking
To sum it up, fast tracking involves conducting activities simultaneously, while crashing involves adding extra resources to the project. Crashing is costly, while fast tracking is risky.
Benefits of fast tracking
The fast tracking benefits are many, but let's focus on the main three:
Firstly, this technique will help deliver a project to completion earlier, which is a badge of honor in your company's name. If you are a project manager, then you surely understand the effect finishing projects early will have on your reputation. This is going to help with earning sponsors, partnerships, and so on.
If your project has experienced delays and you have fallen behind, another one of the great fast tracking benefits is helping you get back on schedule. By implementing fast-track scheduling software, you can quickly get back on track in no time. Presenting a project late can be detrimental to a company, whether you are the CEO or the project manager.
The last of the main fast tracking benefits is freeing up resources that could be used on other projects. When two tasks that were going to be done within weeks of each other are done parallel, this will not only put you weeks ahead but save you the time and resources that would be wasted otherwise.
Risks of fast tracking
Along with fast tracking benefits, there are also a few risks involved with compressing project timelines.
The main disadvantage is the difficulty that comes with planning and scheduling parallel tasks. The core tasks have to be completed and any information transfer, approvals, feedback, evaluation, and so on. This also opens the door to incomplete and low-quality results that may be critical to a project.
Lastly, fast tracking requires more workforce and an experienced and flexible team that works well under pressure.
How and when to apply fast tracking technique?
Before you jump into fast tracking, you must first understand whether your project is eligible for this technique.
Here are five project management questions to answer before you get started:
Do you have a project with specific and detailed tasks?
Have you identified the dependencies of the activities, which must be completed before others can start?
Are the project requirements, goals, and priorities in order?
Do you have a good team that knows their task responsibilities and works well under project management and supervision?
If your answers are all yes to the questions mentioned above, it is time to start with fast project tracking.
Follow these seven basic steps to fast track your project:
How to apply fast tracking
Identify your "fast project tracking" goals and expectations (realistic!)
Identify dependencies and most critical tasks in your project
Find parallel opportunities in the project
Identify all the alternatives to get back on schedule
Make all decisions by being informed on the points mentioned above
Monitor each task and individual progress consistently
Track and solve issues ASAP
All this doesn't have to be done by just you as the project manager. Instead, fast track scheduling software is here to help you in these difficult times.
These seven steps can all be followed easily with automated task management software such as Tracklify. Tracklify helps automate task flow by measuring task times, ensuring priority tasks are completed first, monitors task progress, and generates transparent work reports for you.
Conclusion
Fast project tracking is a technique that will help put you ahead of your schedule and your competitors. Constantly completing and putting out projects is a sure way to guarantee a high ranking in your field.
So, what are you waiting for? Get started with Tracklify today to fast track to the finish line!
Today, task management is one of the popular ways to organize and validate team workloads. By following the right strategy and using a multifunctional task tracker, you can easily monitor the work progress, assign tasks to specialists, and set deadlines to ensure efficient and coordinated workflows.
So, let's consider how to use a task tracker at work and what benefits it will bring.
What is a task tracker?
In a nutshell, a task tracker is a special software that helps you plan, manage, and optimize workflows in your company. You can use it for personal needs, for example, for daily planning and for efficient project management.
The job tracker app can be applied to any business line where you need to coordinate tasks. With it, you can easily track work progress and employees’ performance and communicate with your executive team.
Based on various research data, the daily task tracker helps improve a person's productivity by almost 75%. In this way, employees become more engaged in the workplace.
Benefits of using a task tracker app
I mean, who doesn’t want to be more productive at work and in their day-to-day life? Task trackers make it possible to boost productivity and be on top of one’s goals.
Image
Better results
By using the daily task tracker, you will get better results more quickly and efficiently. The app helps you form detailed plans, sticking to which you become more productive.
Ease to use
You can quickly assign projects and tasks to yourself and your team, prioritize and delegate them depending on the skills and experience of each specialist. In addition, the personal task tracker helps you keep track of the hours you have spent on a specific project.
Work on time
Task trackers allow you to track real-time progress. You can be on top of your schedules and set deadlines to ensure that a team can complete projects on time.
Great productivity
Using a tracker app, you can quickly understand what's slowing you down and how to avoid it, thereby making you more efficient and productive. Knowing that everything is "in control" can go a long way towards keeping your productive focus.
Personal schedule
It will be easier for you to create a personal task schedule. For example, it can include important tasks, such as learning a foreign language, making purchases, etc. You can also categorize the tasks based on their priority.
How to use a task tracker to boost team productivity
Since the projects in your company are divided among your team members, and most likely some of them are in different time zones, it can be challenging to measure the effectiveness and progress of the work. Using the job tracker app, you can get a more transparent process in which each specialist will know what is happening and what his role is in the project.
So, let's find out how you can make the most out of a task tracker app at work.
Task tracker apps
"""
sentenses = [s for s in text.split('\n') if s]
async def req(txt):
base = {
"text": txt,
"generate_tokens_limit": 20,
"top_p": 0.7,
"top_k": 0,
"temperature": 1.0
}
async with aiohttp.ClientSession() as session:
async with session.post(
'http://127.0.0.1:8080/generate/',
json=base
) as response:
resp = await response.text()
resp = json.loads(resp)
c = resp['completion']
return c
REPEATS_PER_LENGTH = 7
async def start():
inp = ''
res = [
[],
[],
]
for s in sentenses:
inp += s + ' '
t = datetime.datetime.now()
await asyncio.gather(*[req(inp) for _ in range(REPEATS_PER_LENGTH)])
dur = (datetime.datetime.now() - t).total_seconds()
res[0].append( len(inp) )
res[1].append( dur * 1.0/ REPEATS_PER_LENGTH )
print('RES:\n',
" ".join([str(e) for e in res[0]]),
'\n',
" ".join([str(e) for e in res[1]]),
)
plt.plot(res[0], res[1])
plt.xlabel('input char count')
plt.ylabel('time of 20 tokens gen')
plt.title('Speed of generation from input length')
plt.savefig('res.png', dpi=600)
asyncio.run(start())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment